一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一 个 n 级的台阶总共有多少种跳法MATLAB
时间: 2023-09-02 09:14:55 浏览: 104
该问题可以使用递归或动态规划的方法求解。以下是使用 MATLAB 实现的两种方法:
递归方法:
```
function f = jump(n)
if n <= 0
f = 0;
elseif n == 1
f = 1;
elseif n == 2
f = 2;
else
f = jump(n-1) + jump(n-2);
end
end
```
动态规划方法:
```
function f = jump(n)
if n <= 0
f = 0;
elseif n == 1
f = 1;
elseif n == 2
f = 2;
else
f = zeros(n,1);
f(1) = 1;
f(2) = 2;
for i = 3:n
f(i) = f(i-1) + f(i-2);
end
end
end
```
其中,递归方法中的 jump 函数使用了 if-elseif-else 结构,对于不同的 n 值分别进行了处理。当 n 小于等于 0 时,跳法为 0;当 n 等于 1 时,跳法为 1;当 n 等于 2 时,跳法为 2;当 n 大于 2 时,跳法为上一次跳 1 级台阶的跳法加上上一次跳 2 级台阶的跳法。这是一个典型的递归结构,但递归的次数会随着 n 增大而指数级增加,因此 n 较大时,递归方法会非常耗时。
动态规划方法中的 jump 函数首先处理了 n 小于等于 2 的情况,然后使用一个长度为 n 的向量 f 存储跳法数,将 f(1) 和 f(2) 分别初始化为 1 和 2。接下来,使用 for 循环依次计算出 f(3) 到 f(n) 的值,每次计算时都使用了前面已经计算出的值,从而避免了重复计算,提高了效率。
阅读全文