题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
题解
该题为青蛙跳台阶的进阶版本,递归思想一致
f(3) = f(2)+f(1)+1;
f(n) = f(n-1)+…+1;
这里的加一操作,其实很容易理解,就是直接跳n个台阶,为一种跳法,
所以不妨把f(0)设为1,
也就是f(n) = f(n-1)+…+f(1)+f(0)。
public int JumpFloorII(int target){
//f(n) = f(n-1)+...+f(1)+f(0),f(0)含义为直接跳n个台阶,为一种方案。
if(target == 1 || target == 0){
return 1;
}
if(target == 2){
return 2;
}
int sum = 0;
for(int i = 0;i < target;i++){
sum += JumpFloorII(i);
}
return sum;
}
欢迎交流。