题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
如果第一次跳一级,剩下的就是n-1级台阶的跳法f(n-1);
如果第一次跳两级,剩下的就是n-2级台阶的跳法f(n-2);
如果第一次跳三级,剩下的就是n-2级台阶的跳法f(n-3);
。。。。。。
如果第一次跳n-1级,剩下的就是1级台阶的跳法f(1);
如果第一次跳n级,就只有这一种跳法。
f(n)=f(n-1)+f(n-2)+。。。+f(1)+1;
递归实现
代码1
//递归
public class Solution {
public int JumpFloorII(int n) {
if(n<=0){
return 0;
}
if(n==1){
return 1;
}
int sum=0;
for(int i=1;i<n;i++){
sum=sum+JumpFloorII(i);//计算的是f(1)加到和(n)。
}
return sum+1;
}
}