9、变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
1、递归
public int JumpFloorII(int target) {
if(target<=0){
return 0;
}
if(target==1||target==2){
return target;
}
int sum=1;
for(int i=1;i<target;i++){
sum=sum+JumpFloorII(target-i);
}
return sum;
}
2、公式推导
public int JumpFloorII2(int target) {
if(target<0){
return 0;
}
if(target<3){
return target;
}
int[] array=new int[target+1];
/**
* f(n)=f(n-1)+f(n-2)+f(n-3)=...
* f(n-1)=f(n-2)+......
* f(n)=2*f(n-1)
*
*/
for(int i=3;i<=target;i++){
array[i]=2*array[i-1];
}
return array[target];
}