如何解决使用递归函数在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。