牛客網《劍指Offer》(9)變態跳臺階

題目描述

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

題目分析

乍一眼看上去,此題好像不能使用之前的分析方法了,那麼換個思路,從後往前不行,那就從前往後。

f(1)  =  1

f(2)  =  1+ f(1)

......

f(n-1)  =  1+f(1) +f(2) +...+ f(n-2)            (3式)

f(n)  = 1+ f(1) + f(2) +...+f(n-2) +f(n-1)     (4式)

4式 - 3式得:f(n)  =  2 * f(n-1),得出遞推公式,直接遞歸實現就可以了。

class Solution {
public:
    int jumpFloorII(int number) {
        if(0 == number)
            return 0;
        else if(1 == number)
            return 1;
        else 
            return 2 * jumpFloorII(number -1);
    }
};

簡單解釋一下3式和4式:第n級臺階的跳法,其實就幾種場景:

1、從第n-1級跳到第n級。f(n-1)

2、從第n-2級直接跳到第n級。f(n-2)

......

n-1、從第一級直接跳到第n級。f(1)

n、從起點直接跳到第n級。f(0) = 1

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