1. 程式人生 > >《劍指Offer》遞迴和迴圈--跳臺階

《劍指Offer》遞迴和迴圈--跳臺階

時間限制:1秒 空間限制:32768K 熱度指數:320390

題目描述

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

思路:

找規律的方法,f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5,  可以總結出f(n) = f(n-1) + f(n-2)的規律,但是為什麼會出現這樣的規律呢?假設現在6個臺階,我們可以從第5跳一步到6,這樣的話有多少種方案跳到5就有多少種方案跳到6,另外我們也可以從4跳兩步跳到6,跳到4有多少種方案的話,就有多少種方案跳到6,其他的不能從3跳到6什麼的啦,所以最後就是f(6) = f(5) + f(4);這樣子也很好理解變態跳臺階的問題了。

public class Solution {
    public int JumpFloor(int target) {
        if(target == 0)
            return 0;
        if(target == 1)
            return 1;
        if(target == 2)
            return 2;
        int one = 1;
        int two = 2;
        int result = 0;
        for(int i = 3; i <= target; i++){
            result = one + two;
            one = two;
            two = result;
        }
        return result;
    }
}