【劍指offer】跳臺階

題目描述:

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

題目解析:

當只有一節臺階的時候由於每次只能跳一級或者兩級,則只有一種方式,即f(1) = 1;如果有兩個臺階則有f(2) = 2;

如果有n個臺階,第一次跳了1節,則剩下的方式爲f(n-1),如果第一次跳了2節,則剩下的爲f(n-2),所以f()=f(n-2)+f(n-1);

可以看出來最後會變成一個斐波那契數列。在通過迭代的方式計算斐波那契數列就行了

AC代碼:

public class Solution {
    public int JumpFloor(int target) {
        if(target == 0){
            return 0;
        }
        if(target == 1){
            return 1;
        }
        if(target == 2){
            return 2;
        }
        int i1 = 1,i2 = 2;
        int floor = 0;
        for(int i = 3;i <= target;i++){
            floor = i2 + i1;
            i1 = i2;
            i2 = floor;
        }
        return floor;
    }
}

 

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