8. 跳台阶

/*跳台阶*/
/*一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶共有多少种跳法。*/
/*思路:将跳法f设为台阶数n的函数,f(n).
如果台阶数小于等于0,那么0种跳法。
如果跳上1级台阶,那么1种跳法。
如果跳上2级台阶,那么可以一次跳1级,也可以一次跳2级,一共2种跳法。
如果跳上3级台阶,那么第一次跳有两种跳法:一次跳1级,则还剩下2级台阶,即有f(2)种跳法;一次
跳2级,则还剩下1级台阶,即有f(1)种跳法。也就是,f(3) = f(2) + f(1).

以此类推,f(n) = f(n-1) + f(n-2)。这道题就是一个变形的斐波那契数列。类似于第7题。*/

class Solution {
public:
    int jumpFloor(int number) {
        if(number <= 0)
            return 0;
        if(number == 1)
            return 1;
        if(number == 2)
            return 2;
        int Fibone = 1;
        int Fibtwo = 2;
        int FibN = 0;
        for(int i = 3; i <= number; ++ i){
            FibN = Fibone + Fibtwo;
            Fibone = Fibtwo;
            Fibtwo = FibN;
        }
        return FibN;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_39605679/article/details/80864972