一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)
分析过程
当台阶数 n = 0时、跳法f(n) = 0
n = 1 f(n) = 1 [1]
n = 2 f(n) = 2 [1 1]、[2]
n = 3 f(n) = 3 [1 1 1]、[2 1]、[1 2]
n = 4 f(n) = 5 [1 1 1 1]、[2 2]、[1 1 2]、[1 2 1]、[2 1 1]
n = 5 f(n) = 8 [1 1 1 1 1]、[1 2 2]、[2 1 2]、[2 2 1]、[1 1 1 2]…
……
F(n) = {0、1、2、3、5、8、13…} n = 0, 1, 2, 3, 4……n
这种数列形式是不是与斐波那契数列相似呢
//青蛙跳台阶递归解法:
public class Solution {
public int JumpFloor(int target) {
if(target == 0){
return 0;
}
if(target == 1){
return 1;
}
if(target == 2){
return 2;
}
return JumpFloor(target-1) + JumpFloor(target-2);
}
}
//青蛙跳台阶循环解法:
public class Solution {
public int JumpFloor(int target) {
int a = 1;
int b = 2;
int c = 0;
if(target == 0){
return 0;
}
if(target == 1){
return target;
}
if(target == 2){
return target;
}
for(int i = 3; i <= target; i++){
c = a + b;
a = b;
b = c;
}
return c;
}
}
本文详细解析了青蛙跳台阶问题,通过分析不同台阶数下的跳法数量,揭示了其与斐波那契数列的联系。提供了递归与循环两种算法实现方案,适合初学者理解递归与动态规划的基本思想。
2771

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



