首页 > 解决方案 > 使用递归函数在 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

标签: matlabfunctionrecursionfibonacci

解决方案


也许你可以试试下面的代码,它保存了输出

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

推荐阅读