所以我遇到了递归的一个小问题。我发现在使用递归找到斐波那契数列方面存在很多问题,但我自己却发现(大多数情况下)。然而,我挣扎的是试图找出所有斐波那契数字的总和,直到某个值。例如,如果我输入数字3,我应该得到四个。如果我输入数字10,我总应该是143所以基本上:使用递归计算Fibonacci序列的总和MATLAB
Test Cases:
out1 = sumFib(3);
out1 = 4;
out2 = sumFib(10);
out2 = 143;
out3 = sumFib(28);
out3 = 832039
我挣扎有点了解如何获得基本情况(或终止因子)。这里是我到目前为止我的代码:
这给了我什么数的值是第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
并使用Fibonacci序列的正确总和方面
if n==3
out = 4;
else
out = sumFib(n+2)-1;
end
在这里,1是我试图让问题知道移动到下一个数字,但这是行不通的。如果有人能够更好地向我解释基础条件和帮助,我会很感激。
你有*使用递归吗?在Stackoverflow的某处我想我看到了它的矢量化版本。不过,我可能正在做梦。 – Divakar 2014-10-30 17:12:32
我必须使用递归。我尝试着实际使用阵列版本,但是这并不适合我尝试做的事情。或者我无法实现它的工作。 – 2014-10-30 17:15:13
请注意以下内容:https://proofwiki.org/wiki/Sum_of_Sequence_of_Fibonacci_Numbers – Amro 2014-10-30 17:20:48