遞迴 上台階走法

2021-10-08 14:17:23 字數 778 閱讀 9139

遞迴需要滿足的三個條件剛剛這個例子是非常典型的遞迴,那究竟什麼樣的問題可以用遞迴來解決呢?

我總結了三個條件,只要同時滿足以下三個條件,就可以用遞迴來解決。

乙個問題的解可以分解為幾個子問題的解何為子問題?子問題就是資料規模更小的問題。比如,前面講的電影院的例子,你要知道,「自己在哪一排」的問題,可以分解為「前一排的人在哪一排」這樣乙個子問題。

這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣比如電影院那個例子,你求解「自己在哪一排」的思路,和前面一排人求解「自己在哪一排」的思路,是一模一樣的。

存在遞迴終止條件把問題分解為子問題,把子問題再分解為子子問題,一層一層分解下去,不能存在無限迴圈,這就需要有終止條件。

還是電影院的例子,第一排的人不需要再繼續詢問任何人,就知道自己在哪一排,也就是 f(1)=1,這就是遞迴的終止條件。

假如這裡有 n 個台階,每次你可以跨 1 個台階或者 2 個台階,請問走這 n 個台階有多少種走法?

如果有 7 個台階,你可以 2,2,2,1 這樣子上去,也可以 1,2,1,1,2 這樣子上去,總之走法有很多,那如何用程式設計求得總共有多少種走法呢?

我們仔細想下,實際上,可以根據第一步的走法把所有走法分為兩類,第一類是第一步走了 1 個台階,另一類是第一步走了 2 個台階。所以 n 個台階的走法就等於先走 1 階後,n-1 個台階的走法 加上先走 2 階後,n-2 個台階的走法。用公式表示就是:

f(n) = f(n-1)+f(n-2)

intf(

int n)

上台階問題(遞迴,DFS)

題目 一共39層台階。如果我每一步邁上1個台階或者兩個台階,先邁左腳,再邁右腳,然後左右交換,最後一步邁右腳,也就是一共要走偶數步,那麼,上完39級台階,有多少種不同的方法?思路採用遞迴的思想,邊界條件就是台階上數小於0,返回0 台階上等於0,而且步數恰好是偶數步,那麼說明走完了所有台階,方法加1....

上台階問題

問題描述 現在小瓜想通過台階走上平台,最底層 小瓜所在的層 編號為1,最頂層編號為n。由於小瓜的腿比較短,他一次只能向上走1級或者2級台階。小瓜想知道他有多少種方法走上平台,你能幫幫他嗎?輸入 乙個整數n,其中2 n 25。輸出 一行乙個整數,表示小瓜上台階的方案數 資料範圍 對於12 的資料,2 ...

賽碼 上台階(C )

設定人現在在台階1層,每次只能上1層到兩層,到台階1層有0種走法,到台階2層有1種走法,到台階3層有2種走法,這樣我們已經知道底部子問題的解。f n f n 1 f n 2 比如說4層只能由2層 跨兩步 或3層到達 跨1步 因此4層的走法數應該是2層走法數和3層走法數的和。使用乙個陣列來儲存到某個台...