一仅仅青蛙一次能够跳上1级台阶,也能够跳上2级……它也能够跳上n级。
求该青蛙跳上一个n级的台阶总共同拥有多少种跳法。
分析:
这是一个斐波拉契数列的引申问题,先来看看斐波拉契数列:
n<=1, f(n)=1;
n>=2, f(n)=f(n-1)+f(n-2);
假设这个题变一下“一仅仅青蛙一次能够跳上1级台阶。也能够跳上2级。求该青蛙跳上一个n级的台阶总共同拥有多少种跳法。”就成了典型的斐波拉契数列问题了。
回过头来看这个题,貌似没有头绪。怎么办,採用最笨的方法。穷举:
n<=1, f(n)=1;
n=2, f(2)=2;
n=3, f(3)=4;
第一次走一步,2种。第一次走俩步,1种。一次走三步。1种;
n=4, f(4)=8;
第一次走一步,4种。第一次走俩步,2种;第一次走三步。1种。一次走四步,1种。
是不是看到规律了:
f(n)=f(n-1)+f(n-2)+.....+f(1)+f(0)=2f(n-1)
上Java代码:
public class Solution {
public int JumpFloorII(int target) {
if(target<=1)
return 1;
else
return 2*JumpFloorII(target-1);
}
}