变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
总结
- n=1时:f(1)=f(0)+1=1;
- n=2时:f(2)=f(0)+f(1)+1=2
- n=2时:f(3)=f(0)+f(1)+f(2)+1=3
- …
- n=n-1时:f(n-1)=f(n-2)+f(n-3)+…f(3)+f(2)+f(1)+1
- n=n 时:f(n)=f(n-1)+f(n-2)+f(n-3)+…f(3)+f(2)+f(1)+1
- 用f(n)-f(n-1)整理之后得到:
f(n)=2*f(n-1)
也就是说这个也就是相当于最后要返回的值 ,同样是递归体
public class Solution {
public int JumpFloorII(int target) {
if(target ==0)
return 0;
if(target == 1)
return 1;
if(target ==2)
return 2;
return 2*JumpFloorII(target -1);
}
}