青蛙跳臺階(遞迴思想)
題目:
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)
分析:
青蛙的最後一跳可以分為兩種情況:第一種是最後一跳只跳了一個臺階;第二種是最後一跳只跳了兩個臺階。
【最後一跳,不會影響前面的跳法總數】
這句話的意思是:假如有n個臺階,跳法總數為f(n),
通過上面分析可知,f(n)由兩部分跳法組成:第一種是最後只能跳一個臺階,也就是前面跳了n-1個臺階。那麼對於這種情況來說,最後跳的這一下,不會對前面n-1個臺階的跳法(f(n-1))產生影響。同理,對於最後只能跳兩個臺階的情況來說,最後一跳,不會影響前面n-2個臺階的跳法總數(f(n-2))。
顯然:f(n)=f(n-1)+f(n-2)
——————————————————————
照這樣計算:
f(n-1)= f(n-2)+f(n-3)
f(n-2)= f(n-3)+f(n-4)
…
…
…
上面就是遞迴的過程。
現在還需要遞迴所需的初值,因為上面全是遞迴的過程,如果沒有初值,就不能進行計算,
當只有一個臺階的時候:f(1)=1;
當有兩個臺階的時候:f(2)=2;
所以程式碼如下:
class Solution {
public:
int jumpFloor(int number) {
if(number==1) return 1;
if(number==2) return 2;
else return jumpFloor(number-2)+jumpFloor(number-1);
}
};
相關文章
- 青蛙跳臺階
- SQL 遞迴思想SQL遞迴
- 臺階很高,青蛙跳不跳?
- 遞推,遞迴,貪心,列舉思想遞迴
- 遞迴思想的巧妙理解遞迴
- DAY2 做題變態青蛙跳臺階
- [每日一題] 第十七題:青蛙跳臺階問題每日一題
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 劍指 Offer 10- II. 青蛙跳臺階問題JavaJava
- c#遞迴實現 階乘C#遞迴
- Python進階-演算法-遞迴Python演算法遞迴
- 遞迴的列印和階乘運用遞迴
- Python 函式進階-遞迴函式Python函式遞迴
- 用遞迴方法求10的階乘遞迴
- 遞迴和尾遞迴遞迴
- 力扣之 4 的冪 & 3 的冪 & 2 的冪(遞迴思想)力扣遞迴
- 不管是青蛙跳臺階還是who爬樓梯,能上去就行
- 快速排序【遞迴】【非遞迴】排序遞迴
- 遞迴遞迴
- 什麼是遞迴?遞迴和迴圈的異同遞迴
- go 遞迴Go遞迴
- JavaScript遞迴JavaScript遞迴
- 理解遞迴遞迴
- 分而治之-遞迴遞迴
- 前沿高階技術之遞迴神經網路(RNN)遞迴神經網路RNN
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 理解二叉樹遞迴中的自底向上和自頂向下兩種思想二叉樹遞迴
- 遞迴和遞推總結遞迴
- 迭代與遞迴--你被遞迴搞暈過嗎?遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 遞迴呼叫 VS 迴圈呼叫遞迴
- 【進階篇】Java 專案中對使用遞迴的理解分享Java遞迴
- 測開之函式進階· 第1篇《遞迴函式》函式遞迴
- 遞迴總結遞迴
- 遞迴函式遞迴函式
- 談談遞迴遞迴
- 遞迴問題遞迴
- 遞迴加回溯遞迴