我正在尝试编写一个递归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