使用循环的Matlab进行Fibonacci序列(迭代)

时间:2015-02-20 02:32:04

标签: matlab loops iteration

如何使用循环在Matlab中编写Fibonacci函数?功能必须有两个输入。

输入: 1.一个数字来启动序列 2.要返回的术语数(必须是正整数(N))

输出:是Fibonacci序列的1xN向量。

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

由于

1 个答案:

答案 0 :(得分: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,那么只返回初始期限。如果是2,则返回初始术语和第二学期的数组。如果它更大,那么创建一个大小为N的输出数组,其中前两个元素被初始化,就像N = 2的情况一样,然后我们只需循环并使用Fibonacci递推公式从索引3开始填充输出中的每个元素。

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

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