题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:
f(n-1) = f(0) + f(1)+f(2)+f(3) + ... + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2)
f(n) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1) = f(n-1) + f(n-1)
可以得出:
f(n) = 2*f(n-1)
递归法1:
public class Solution {
public int JumpFloorII(int target) {
if (target==0)
return 1;
if (target==1)
return 1;
int sum=0;
for(int i=0;i<target;i++){
sum=sum+JumpFloorII(i);
}
return sum;
}
}
递归法2:
public class Solution {
public int JumpFloorII(int target) {
if (target==0)
return 1;
if (target==1)
return 1;
return 2*JumpFloorII(target-1);
}
}
迭代:
public class Solution {
public int JumpFloorII(int target) {
if (target==0)
return 1;
if (target==1)
return 1;
int a=1;
while(target>1){
a*=2;
target--;
}
return a;
}
}