题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
这是上一道题的升级版,不过递推思想还是一样:
我们从后往前想:
1.当n级台阶时,假设有n中跳法
2.青蛙第一次跳1级,剩下n-1级,则有n-1种跳法
3.青蛙第一次跳2级,剩下n-2级,则有n-2种跳法
……………………….
……………………….
n.青蛙一次跳n级,剩下0级,则有1种跳法
f(n)=f(n-1)+f(n-2)+f(n-3)+…+f(1)+f(0)
f(n-1)=f(n-2)+f(n-3)+….+f(1)+f(0)
则
f(n)=2*f(n-1) n>=2
f(n)=1 n=1
f(n)=1 n=0
public class Solution {
public int JumpFloorII(int target) {
if (target == 1)
return target;
int sum=0,s1=1;
while(target-1>0) {
sum=2*s1;
s1=sum;
target--;
}
return sum;
}
}