问题描述
一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶,求:
青蛙跳上n阶台阶共有多少种跳法?
需求分析
该问题可以看做是n是有几个1和几个2相加得到的!
经过分析发现该问题是裴波那切数列的升级版
n | 1 | 2 | 3 | 4 | … |
---|---|---|---|---|---|
f(n) | 1 | 2 | 3 | 5 | … |
发现规律
f(n)=f(n-1)+f(n-2)
代码实现
public long Jump(int a) {
long sum = 1;
long tmp = 1;
if (a <= 0) return 0;
if (a ==1) return tmp;
for (int i = 2; i <= a; i++) {
sum = sum + tmp;
tmp = sum - tmp;
}
return sum;
}