变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
式一: f(n) = f(1)+f(2)…+f(n-2)+f(n-1)
式二: f(n-1) = f(1)+f(2)…+f(n-2)
相减: f(n) - f(n-1) = f(n-1) ==========> f(n) = 2* f(n-1)\
方法一: 递归
int jumpFloorII(int number) {
if(number <= 1){
return 1;
}
if(number == 2){
return 2;
}
return 2 * jumpFloorII(number-1);
}
测试一:
方法二: 循环
int jumpFloorII(int number) {
if(number == 0){
return 0;
}
if(number == 1){
return 1;
}
if(number == 2){
return 2;
}
int jumpNum = 0;
int jumpLastNum = 2;
for( int i = 3;i<= number; ++i){
jumpNum = 2*jumpLastNum;
jumpLastNum = jumpNum;
}
return jumpNum;
}
测试二: