青蛙跳臺階(遞迴思想)

如海流_小東發表於2020-11-14

題目:
一隻青蛙一次可以跳上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);
    }
};

相關文章