gpt4 book ai didi

matlab - 使用递归 MATLAB 计算斐波那契数列的总和

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:46 25 4
gpt4 key购买 nike

所以我在递归方面遇到了一点问题。我看到有很多关于使用递归查找斐波那契数列的问题,但我自己想出了(大部分)。然而,我正在苦苦挣扎的是试图找到所有斐波那契数的总和,直到某个值。例如,如果我输入数字 3,我应该得到 4。如果我输入数字 10,我的总数应该是 143。所以基本上:

 Test Cases:
out1 = sumFib(3);
out1 = 4;

out2 = sumFib(10);
out2 = 143;

out3 = sumFib(28);
out3 = 832039

我有点难以理解如何获得基本情况(或终止因素)。到目前为止,这是我的代码:

function out = sumFib(n)

if n==1 || n==2
out = 1;
else
out =sumFib(n-1) + sumFib(n-2) ;
%// Gives us the value of n-1 and adds it to the value of n-2

end

end

这给了我数字在第 n 个位置的值。为了找到总和,我尝试了以下方法

if n==3
out = 4
else
out = sumFib(n) + sumFib(n - (n-1))

如你所想,这标记了我

"Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can crash MATLAB and/or your computer."

我也试过:

function out = sumFib(n)

if n==1 || n==2
out = 1;
else
out =(1+sumFib(n-1)) + sumFib(n-2) ;
%Gives us the value of n-1 and adds it to the value of n-2

并为斐波那契数列使用正确的求和方面

if n==3
out = 4;
else
out = sumFib(n+2)-1;
end

这里的 1 是我试图让问题知道继续下一个数字的尝试,但这不起作用。如果有人能更好地向我解释基本条件并提供帮助,我将不胜感激。

最佳答案

保持简单,将功能分成两部分:

function out = fib_sum(n)
out = fib(n+2) - 1;
end

function out = fib(n)
if n < 2
out = n;
else
out = fib(n-1) + fib(n-2);
end
end

(当然我假设非负整数)

关于matlab - 使用递归 MATLAB 计算斐波那契数列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26659222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com