题目描述:
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。
求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
在n>2的时候, 如果最后一次跳一步,有 f(n-1) 种可能,如果最后一次跳两步,有f(n-2)种可能
所以总的情况应该是起两种情况的总和,也就是f(n) = f(n-1) + f(n-2); 并且有f(1) = 1, f(2) = 2;
1, n=1
f(n) = 2, n=2
f(n-1) + f(n-2), n>2
代码
public static int jumpFloor(int target) {
if (target==0)
return 0;
if (target==1)
return 1;
if (target==2)
return 2;
int nMinusTwo = 1; // f(n-2)
int nMinusOne = 2; // f(n-1)
int result = 0;
// 3循环 1次, 4循环2次, n循环n-2次。
for(int i = 0; i < target - 2; i++) {
result = nMinusOne + nMinusTwo;
nMinusTwo = nMinusOne;
nMinusOne = result;
}
return result;
}
本文详细解析了经典的青蛙跳台阶问题,通过递归思想和动态规划的方法,提供了一种高效求解任意n级台阶所有可能跳法的算法实现。

1954

被折叠的 条评论
为什么被折叠?



