使用递归函数不使用任何循环在 Matlab 中生成斐波那契数列
Generating the Fibonacci Sequence in Matlab using recursive function NOT using any loop
我正在尝试编写一个递归的 matlab 函数,它接受一个参数并生成最多 n 的斐波那契数列。我到处都能找到的代码要么只输出第 n 项,要么使用循环输出整个序列。现在我不允许使用任何类型的循环,只能使用纯递归函数。如果有人可以分享 his/her 想法,我将不胜感激。提前致谢。
为了方便起见,我正在复制给出第 n 项的代码。
function f = fibor(n)
if n == 1 || n == 2
f = 1;
else
f = fibor(n-1) + fibor(n-2);
end
end
也许你可以试试下面的代码,它保存了输出
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
我正在尝试编写一个递归的 matlab 函数,它接受一个参数并生成最多 n 的斐波那契数列。我到处都能找到的代码要么只输出第 n 项,要么使用循环输出整个序列。现在我不允许使用任何类型的循环,只能使用纯递归函数。如果有人可以分享 his/her 想法,我将不胜感激。提前致谢。 为了方便起见,我正在复制给出第 n 项的代码。
function f = fibor(n)
if n == 1 || n == 2
f = 1;
else
f = fibor(n-1) + fibor(n-2);
end
end
也许你可以试试下面的代码,它保存了输出
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