题目:跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
C++解题
方案一:一级台阶,1种跳法,二级台阶,2中跳法,从三级台阶开始,有两种可能:1.从差2级台阶到顶的位置往上跳;2.从差2级台阶到顶的位置往上跳。即n(n>3)级台阶的跳法等于n-1级台阶的跳法加上n-2级台阶的跳法。
class Solution {
public:
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
return jumpFloor(number-1)+jumpFloor(number-2);
}
};
方案二:由方案一进一步引申,发现这和斐波那契数列类似。
class Solution {
public:
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
int pre=1,p=2,res;
number=number-2;
while(number--){
res=pre+p;
pre=p;
p=res;
}
return res;
}
};