算法—跳臺階詳解

算法—跳臺階詳解

題目

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

解題思路

用遞歸的思路比較好理解,跳到第n個臺階最後一步只有兩種可能,第一,從第n-1跳一級。第二,從n-2跳2級。也就是說f(n) = f(n-1) + f(n-2)

題目衍生

  一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
  對於這個也可以用上述思路思考一下。對於跳到第n個臺階,最後一步有n種方法,分別是跳1,2,3。。。。n級,對應的就是

  • f(n) = f(n-1)+f(n-2)…f(0)            (1)
    很容易得出

  • f(n-1) = f(n-2)+f(n-3)…f(0)           (2)
    將(2)式代入(1)式我們就能得到(3)

  • f(n) = f(n-1)+f(n-1)               (3)

代碼

  • 跳臺階
class Solution {
public:
    int jumpFloor(int number) {
        if(number >= 0 && number <= 2)
        {
            return number;
        }
        return jumpFloor(number - 1) + jumpFloor(number - 2);
    }
};
  • 跳臺階拓展
class Solution {
public:
    int jumpFloorII(int number) {
        if(number >= 0 && number <= 2)
        {
            return number;
        }
        return 2 * jumpFloorII(number - 1);
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章