题目描述
一只青蛙一次可以跳上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);
}
};