題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
題目分析
此題其實和前一題相似,首先分析一下。假設共有10級臺階,且10級臺階的跳法爲f(10)。那麼就有以下兩種場景:
1、最後一次跳了兩級:第八級直接跳到第十級。
2、最後一次跳了一級:第九級直接跳到第十級
即f(10) = f(8) + f(9),這不就是斐波那契數列的遞推公式嗎?唯一的區別是f(2)= 2,而不是1。
class Solution {
public:
int jumpFloor(int number) {
//同上,f(n) = f(n-1) +f(n+1)
if(number <= 2)
return number;
else
return jumpFloor(number-1) + jumpFloor(number-2);
}
};