所以我遇到了遞歸的一個小問題。我發現在使用遞歸找到斐波那契數列方面存在很多問題,但我自己卻發現(大多數情況下)。然而,我掙扎的是試圖找出所有斐波那契數字的總和,直到某個值。例如,如果我輸入數字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