思路:
用f(n)表示有一次跳n节的方法种数
n为1时有f(1)种,n为2时有f(2-1)+f(2-2)种,n为3时有f(3-1)+f(3-2)+f(3-3)种
n节时,f(n)=f(n-1)+f(n-2)+···+f(n-n),f(n-1)=f(n-1)+f(n-2)+···+f(n-(n-1))
化简为 f(n)=f(1)+f(2)+···+f(n-1)=2*f(n-1)
实现方法一:
public class Solution {
public int JumpFloorII(int target) {
if(target<=1) return target;
else return 2*JumpFloorII(target-1);
}
}
实现方法二:
public class Solution {
public int JumpFloorII(int target) {
int sum=0;
if(target<0) sum=0;
else if(target==0) sum=1;
else{
for(int i=target-1;i>=0;i--){
sum+=JumpFloorII(i);
}
}
return sum;
}
}