劍指offer — 斐波那契公式及其應用(青蛙跳臺階、變態跳臺階)

青蛙跳臺階

題目:
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

分析:
一個臺階,即f(1):只有一種跳法(1)

兩個臺階,即f(2):有兩種跳法(1,1)、(2)

三個臺階,即f(3):有兩種情況,最後一次跳一個臺階、最後一次跳兩個臺階。
故,f(3) = 最後一次跳一個臺階的所有情況 + 最後一次跳兩個臺階的所有情況。
最後一次跳一個臺階,則之前已經跳了兩個臺階,所有情況:f(2)
最後一次跳兩個臺階,則之前已經跳了一個臺階,所有情況:f(1)
故,f(3) = f(1) + f(2)

4個臺階,即f(4):也有兩種情況,最後一次跳一個臺階、最後一次跳兩個臺階。
故,f(4) = 最後一次跳一個臺階的所有情況 + 最後一次跳兩個臺階的所有情況。
最後一次跳1個臺階,則之前已經跳了三個臺階,所有情況:f(3)
最後一次跳2個臺階,則之前已經跳了兩個臺階,所有情況:f(2)
故,f(4) = f(2) + f(3)

public class Solution {
    public int JumpFloor(int target) {
        if(target==1)
            return 1;
        if(target == 2)
            return 2;
        return JumpFloor(target-2)+JumpFloor(target-1);
    }
}

變態跳臺階

題目:
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
分析:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章