matlab - 使用递归函数在 Matlab 中生成斐波那契数列而不使用任何循环
问题描述
我正在尝试编写一个递归 matlab 函数,该函数接受一个参数并生成最多 n 的斐波那契序列。我到处找到的代码要么只输出第 n 项,要么使用循环输出整个序列。现在我不允许使用任何类型的循环,只能使用纯递归函数。如果有人能分享他/她的想法,我将不胜感激。提前致谢。我只是为了方便而复制给出第 n 项的代码。
function f = fibor(n)
if n == 1 || n == 2
f = 1;
else
f = fibor(n-1) + fibor(n-2);
end
end
解决方案
也许你可以试试下面的代码,它保存了输出
function f = fibor(n)
if n <= 2
f = ones(1,n);
else
u = fibor(n-1);
f = [u,sum(u(end-1:end))];
end
end
这使
>> fibor(5)
ans =
1 1 2 3 5
>> fibor(10)
ans =
1 1 2 3 5 8 13 21 34 55
推荐阅读
- html - 孩子隐藏在父母之外,显示:inline-blox 和溢出:自动
- keras - 一维 CNN 输入形状和训练数据形状
- php - 如何修复 pecl 在 debian buster 中安装 XML 错误 PHP 5.6?
- java - 如何使用 Jackson Streaming API 创建对象数组
- javascript - 使用 Django 从数据库加载图像的用户前端选择
- http - HTTP Keep Alive 会减少 TLS 连接吗?
- aws-lambda - 从 Lambda 内部运行 databrew.describe_job_run() 不起作用
- rundeck - 按时间限制重试,而不是尝试
- javascript - 在 react.js 中使用按钮同时发送表单和 href
- html - 如何在卡片中插入行/列(使用 v-for)?