如何使用循环在Matlab中编写Fibonacci函数?功能必须有两个输入。
输入: 1.一个数字来启动序列 2.要返回的术语数(必须是正整数(N))
输出:是Fibonacci序列的1xN向量。
条件:如果初始期限为0或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