当青蛙仅仅只能跳一阶或者两阶时,第n阶取决于本次f(n-1)+f(n-2)
递归实现
public static int normalJump(int target) {
if(target<=0) {
return 0;
}else if(target ==1) {
return 1;
}else if(target ==2) {
return 2;
}else {
return normalJump(target-1)+normalJump(target-2);
}
}
变态青蛙跳:
f(1) = 1;
f(2) = f(1)+1 = 2*f(1);
f(3) = f(2) +f(1)+1 = 4f(1);
f(4)= f(3)+f(2)+f(1)+1=8f(1);
假设f(n) = 2^(n-1);
f(n+1) = f(n)+f(n-1)+f(n-2)+...+f(1)+1 = 2*f(n) = 2^(n)
代码实现:
public static int Jump(int target) {
if(target <=0) {
return 0;
}else if(target==1) {
return 1;
}else {
return (int) Math.pow(2.0, target-1);
}
}