劍指offer——跳臺階

題目描述:

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


思路:

這種問題的思路一般是採用數學歸納法,當n=1時,只有一種跳法;當n=2時,青蛙可以一次跳2級,也可以一次跳兩級,需要跳兩次,所以有兩種跳法;當n=3的時候,首先考慮一次跳1級的情況,由於有3級,所以還有2級沒跳,而跳兩級的跳法已經在前面n=2的情況中計算得到了;下面考慮一次跳2級的情況,同樣跳完2級的之後,還有1級沒有跳,而跳剩下1級的方法是當n=1的時候計算得到的,所以可以歸納出當n=3的時候,跳法是f(3)=f(3-1)+f(3-2)。

爲了確保正確性,我們繼續分析當n=4的情況,由於青蛙第一次的跳法仍然只有兩種。我們先分析第一次跳1級的情況,跳完1級之後,還有3級沒有跳完,而剩下的3級的跳法總數可以由f(3)得到;當第一次跳2級的時候,還有2級沒有跳完,所以剩餘2級的跳法總數可以由f(2)得到。綜合以上分析,我們得到當n=4的時候,跳法總數是f(4)=f(4-1)+f(4-2)=f(3)+f(2)。以此類推,我們可以得到臺階數爲n的情況是f(n)=f(n-1)+f(n-2)。


代碼實現:

public class Solution {
    public int JumpFloor(int target) {
        int a = 1,b=2,c=0;
        if(target<=0){
            return 0;
        }else if(target == 1){
            return 1;
        }else if(target==2){
            return 2;
        }else{
            for(int i = 3;i<=target;i++){
                c = a+b;
                a = b;
                b = c;
            }
            return c;
        }

    }
}
發佈了144 篇原創文章 · 獲贊 24 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章