使用循环(迭代)的 Matlab 斐波那契数列

Fibonacci Sequence with Matlab using Loops(Iteration)

如何使用循环在 Matlab 中编写斐波那契函数?函数必须有两个输入。

输入: 1.a 序号开始 2.the 到 return 的项数(必须是正整数 (N))

输出:是斐波那契数列的 1xN 向量。

条件:如果初始项是0或1,则第二项将为1。对于任何其他数字,将对第二个数字重复初始项。

谢谢

Fibonacci sequence 的定义如下:

您的函数的规范很奇怪,但仍然可行。首先,您需要检查初始项是 0 还是 1。如果是这样,则第二项将为 1。否则,前两项将与初始项完全相同。你首先需要一堆 if 语句……所以像这样:

function out = fibonacci(initial_term, N)

    if initial_term == 0 || initial_term == 1
        second_num = 1;
    else
        second_num = initial_term;
    end

    if N == 1
        out = initial_term;
    elseif N == 2
        out = [initial_term second_num];
    else
        out = zeros(1,N);
        out(1:2) = [initial_term second_num];
        for idx = 3 : N
            out(idx) = out(idx-1) + out(idx-2);
        end
    end
end

第一个 if 语句检查初始项是 0 还是 1。如果是,则第二个数字将为 1。如果不是,则第二个数字将相同作为初始术语。

接下来,我们检查一下 N 是什么。如果它是 1,那么只是 return 初始项。如果它是 2,那么 return 初始项和第二项的数组。如果它更大,则创建一个大小为 N 的输出数组,其中前两个元素像 N = 2 的情况一样被初始化,然后我们简单地循环并使用斐波那契递推公式来填充每个元素在索引 3 及以后的输出中。

您也可以将 for 循环编写为 while 循环。请记住,while 循环不断迭代 ,直到 while 循环检查的 logical 条件变为 false。因此,你会这样做:

out = zeros(1,N);
out(1:2) = [initial_term second_num];
idx = 3;
while idx <= N
    out(idx) = out(idx-1) + out(idx-2);
    idx = idx + 1;
end

调用示例[​​=38=]
>> out = fibonacci(3, 6)

out =

     3     3     6     9    15    24

>> out = fibonacci(0, 6)

out =

     0     1     1     2     3     5

>> out = fibonacci(4, 10)

out =

     4     4     8    12    20    32    52    84   136   220