Matlab:如何在没有循环或内置函数的情况下递归地获取斐波那契序列中的第 N 个元素
Posted
技术标签:
【中文标题】Matlab:如何在没有循环或内置函数的情况下递归地获取斐波那契序列中的第 N 个元素【英文标题】:Matlab: How to get the Nth element in fibonacci sequence recursively without loops or inbuilt functions 【发布时间】:2020-07-24 21:20:35 【问题描述】:我正在尝试编写一个递归代码,它接受输入 n 并输出斐波那契数列的第 n 项,而不使用任何循环或任何 MATLABS 内置函数。
例如:
fibo(6)
ans = 8
我在递归编写代码时遇到问题,非常感谢一些帮助。
我写了一个循环:
function f = fib1(n)
if n <= 1
f = 1;
else
f = fib1(n-1) + fib1(n-2);
end
end
【问题讨论】:
【参考方案1】:如果您想为fib1(6)
获得8
,这意味着您需要从n=1
开始您的斐波那契数列。但是,您的代码表明您从n=0
开始。在这种情况下,您应该在 if-else
语句中使用 n <=2
,即
function f = fib1(n)
if n <= 2
f = 1;
else
f = fib1(n-1) + fib1(n-2);
end
end
这样
>> fib1(6)
ans = 8
如果你不想使用任何递归,你可以试试下面的代码
function f = fib2(n)
f = (((1+sqrt(5))/2)^n - ((1-sqrt(5))/2)^n)/sqrt(5);
end
给了
>> fib2(6)
ans = 8
【讨论】:
以上是关于Matlab:如何在没有循环或内置函数的情况下递归地获取斐波那契序列中的第 N 个元素的主要内容,如果未能解决你的问题,请参考以下文章