青蛙跳台阶扩展问题
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶……也可以跳上n级台阶,此时该青蛙跳上一个n级的台阶总共有多少种跳法?
思路分析
类似于斐波那契数列问题。此题的数列定义为:fn=f(1)+f(2)+……+f(n-1)+1。由此可以记录前多项的和,再用于计算后面的和。代码如下:
public int frogJump(int n){
if(n==1)return 1;
if(n==2)return 2;
ArrayList<Integer> list = new ArrayList<Integer>(){{add(1);add(2);}};
int sum=1+list.get(0);
for (int i = 2; i < n; i++) {
sum+=list.get(i-1);
list.add(sum);
}
return list.get(n-1);
}