遞迴問題思考與覆盤

2021-09-24 02:51:24 字數 701 閱讀 4954

遞迴問題實際上是將乙個大的問題分解成幾個小的問題,然後將小的問題再次分為更小的問題,然後就這樣重複操作下去最後到最小的問題我們能夠解決,然後再解決上乙個較小的問題,直到解決這個大問題。

舉個栗子

我們面試的時候可能會遇到這個問題,走樓梯,你一次只能上一層台階或者兩層,那麼走到第n層有幾種走法呢。

思考

一次只能上一層或者兩層,那麼走上第n層,他必定是從n-1層或者n-2層上來的,我們只需要計算走上n-1和n-2層的走法然後相加就可以知道n層的結果了,可是怎麼計算第n-1和n-2的結果呢,然後們再次進行相同的思考,計算n-1,我們需要知道n-2和n-3,計算n-2需要知道n-3和n-4,然後依次類推,最後需要計算第一層和第二層的方法,可以知道第一層是一種,第二層是兩種。用乙個函式來描述就是:f(n)=(f(n-1)+f(n-2)

用遞迴函式解決

intf(

int n)

但是進一步思考這樣寫會有很多重複計算堆疊溢位問題,就比如上面我們重複計算n-3,這樣會造成很多計算資源浪費,我們可以使用一種資料結構hashmap來解決,對於堆疊溢位問題,我們則可以設定限制遞迴呼叫的最大深度的方式來解決這個問題,如果呼叫的深度超過某個值我們就停止呼叫並提示。

及時覆盤的好處 鎮在思考 及時覆盤,行穩致遠

導言如何掌握人生經營要點,是每個人都必須面對的事情。企業經營,有成有敗 人生經營,有得有失。在現實的社會環境中,面對各種困境時,人人必須認清自我,發揮潛力,才能度過種種難關 而一旦功成名就 事業圓滿,仍然必須心存感激,保持謙沖的態度,不可驕傲自滿。而作為乙個堂堂正正的社會人,更須具備諸種美德,以追求...

STS3與IDEA檔案路徑解析問題覆盤

問題出現 搭建spring mvc boot程式,並整合mybatis。已經成功執行於spring開發套件sts3中,移植到idea 現沒有sqlsessionfactory,因此也就建立不了服務層資料bean。解決思路 為什麼一開始沒想到 因為windows和linux路徑訪問是區別的,乙個是 乙...

Linux環境,出現線上問題覆盤

最近和第三方做對接,在做排班管理時,星期 二 四 六 日不安排排班,於是加段 做層過濾,在本地環境程式能執行,部署到伺服器上,就失效了,一直心想 沒有問題呀,覺得是 打包不是最新的,於是打包好幾次,反反覆覆部署到伺服器,每次部署花20分鐘,部署6次,1個多小時過去了,本來想著不加班,下班回家的念想破...