1、跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:最后一次可以跳1级或者2级,f(n)=f(n-1)+f(n-2)
代码:
class Solution {
public:
int jumpFloor(int number) {
int a=1;
int b=2;
int ret=0;
if(number==1) return 1;
if(number==2) return 2;
for(int i=3;i<=number;i++){
ret=a+b;
a=b;
b=ret;
}
return ret;
}
};
2、变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:
f(n) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1)
f(n-1) =f(0) + f(1) + f(2) + f(3) + ... + f(n-2)
所以,f(n)=2*f(n-1)
另外还有一种分析方法,对于每级台阶都有跳和不跳两种选择,最后一级必须调,就等于2*(n-1)。。。
代码:
class Solution {
public:
int jumpFloorII(int number) {
if(number==1){
return 1;
}
else{
return 2*jumpFloorII(number-1);
}
}
};