題目:
青蛙的最後一跳可以分為兩種情況:第一種是最後一跳只跳了乙個台階;第二種是最後一跳只跳了兩個台階。
【最後一跳,不會影響前面的跳法總數】
這句話的意思是:假如有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
};
題型變化:
如果上一步跳 1 步到達第 n 個台階,說明上一步在第 n-1 個台階。已知跳到第n-1個台階的方法數為f[n-1]
如果上一步跳 2 步到達第 n 個台階,說明上一步在第 n-2 個台階。已知跳到第n-2個台階的方法數為f[n-2]
如果上一步跳 n 步到達第 n 個台階,說明上一步在第 0 個台階。已知跳到 第0個台階的方法數為f[0]
那麼總的方法數就是所有可能的和。也就是f[n] = f[n-1] + f[n-2] + … + f[0] (1)*
遞迴過程跟上一道題目一樣,但是要採用迴圈的方式進行表示,因為公式(1)中的省略號部分,不能用數學公式表達出來。
遞迴過程有了,現在還缺少遞迴的初值:顯然初始條件f[0] = f[1] = 1
**如下:
class
solution
return sum;}}
};
青蛙跳台階問題詳解 遞迴思想
題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 示例1 輸入1 返回值1 示例2 輸入4 返回值5 思想 經典遞迴問題 思路 跳n級台階相當於n 1和n 2級台階的和 原因 n級台階就相當於n 1級再跳一次一階的和n 2級...
遞迴和迴圈 青蛙跳台階
青蛙跳台階題目 思路 只有1級台階,只有一種跳法 如果有2級台階,那麼就有兩種跳法 如果有n n 2 級台階的話,n級台階的跳法可以看成函式f n 那麼第一次跳的時候有兩種選擇,一是跳1級,那麼這種跳法的數目就等於f n 1 二是跳2級的話,那麼這種跳法的數目就等於f n 2 所以n級台階的跳法應該...
遞迴求解青蛙跳台階問題
1.乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階,問這個青蛙跳上n級台階一共有多少種跳法 思路一 和漢諾塔一樣,遞迴的思路就是把問題簡化到更小規模的問題,在寫程式的時候確定兩個目標。一是如何分解乙個問題,二是當該問題分解到最簡時如何處理,將這兩塊內容通過程式告訴電腦,就可以把任務推給電腦,由電腦...