使用循环(迭代)的 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
如何使用循环在 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
>> 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