题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路:倒着推。首先跳一级有一种可能,然后剩下的有f(n-1)中可能;跳两级的有一种可能,然后剩下的有f(n-2);一次类推,跳n级的有一种可能,然后剩下的有f(n-n)=f(0)(f(0)定义为1)种可能。因为是分类计算,所以结果要相加。
参考代码:
public int JumpFloorII(int target) {
if(target == 0){
return 1;
}
if(target == 1 || target == 2){
return target;
}
int sum = 0;
for(int i = 1; i <= target; i++){
sum += JumpFloorII(target - i);
}
return sum;
}