剑指offer(8)

题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
时间限制:1秒 空间限制:32768K 热度指数:236054

分析:小青蛙每一步跳跃只有两种选择:一是再跳一级阶梯到达第 i 级阶梯,此时小青蛙处于第 i-1 级阶梯;或者再跳两级阶梯到达第 i 级阶梯,此时小青蛙处于第 i-2 级阶梯。
于是,i 级阶梯的跳法总和依赖于前 i-1 级阶梯的跳法总数f(i-1)和前 i-2 级阶梯的跳法总数f(i-2)。因为只有两种可能性,所以,f(i)=f(i-1)+f(i-2);
依次类推,可以递归求出n级阶梯跳法之和。

class Solution {
public:
    int jumpFloor(int number) {
        /*if(number==0)
            return 0;
        int a=1,b=2,sum=0;
        if(number==1){
            sum=a;
        }
        else if(number==2){
            sum=b;
        }
        else{
            for(int i=0;i<number-2;i++){
                sum=a+b;
                a=b;
                b=sum;
            }
        }
        return sum;*/
        //递归思想
        if(number<=2)
            return number;
        else
            return jumpFloor(number-1)+jumpFloor(number-2);

    }
};

参考博客:https://www.cnblogs.com/luckyjason/p/5319379.html

猜你喜欢

转载自blog.csdn.net/sll71/article/details/80300884