-
這很好理解,我給你乙個數,取n=5,雖然編譯器有執行順序,但理論上可以認為s1和s2是同時執行的,再看比較一下。
main 函式呼叫 fibona(5); 然後 n
也。 =2,所以:
s1:1 執行 s1=fibona(n-1);
此時,n 變為 4,稱為 fibona(4);
2》n!=1 也! =2,執行 s1=fibona(n-1);
此時,n 變為 3,fibona(3) 稱為;
3》n!=1 也! =2,執行 s1=fibona(n-1);
此時,n變為2,則返回n-1=1,所以s1=1,4“繼續呼叫斐波那(n-1); 即斐波那(2);
5》此時n變為1,稱為斐波那(1);
返回 n-1=1,所以 s1=1,6“,因為 n 為 1 且 n-1 為 0,s1 停止呼叫斐波那(n-1);
s2:1“ 執行 s1=斐波那(n-2);
此時,n 變為 4,稱為 fibona(3);
2》n!=1 也! =2,執行 s1=fibona(n-2);
此時,n 變為 1,稱為 fibona(1);
返回 n-1=1,所以 s2=1;
從 n-2<0 開始,s2 停止計算。
s2 的第二次呼叫結束,s2 1,s1 的第三次呼叫給出 s1 1,所以此時 s1 + s2 2
對 s1 的第四次呼叫返回 1,因此 s1+s2 變為 3。
-
整個程式的結構是用函式呼叫求斐波那契函式:if(n==1||n==2)
return(n-1);
s1=fibona(n-1);
s2=fibona(n-2);
return(s1+s2);
這意味著如果 n==1 或 n==2,則返回 n-1,即 n==1 返回 0n==2
對於既不是 1 也不是 2 的數字,將執行返回 1:
s1=fibona(n-1);
s2=fibona(n-2);
return(s1+s2);
以上三句話是遞迴實現
-
當呼叫結束時出現 n=1 或 n=2 時,斐波那契數列的前兩項的值將返回到前乙個呼叫,然後傳遞回第乙個呼叫。
s1=fibona(n-1);
s2=fibona(n-2);
return(s1+s2);
這三句話是。
fibonacci(n)
fibonacci(n-1)
斐波那契(n-2)的實施例。
整個解決方案是乙個遞迴過程。
-
if(n==1||n==2)
return(n-1)
這兩句話說,如果 n==1 返回 0,n==2 返回 1,即序列的前兩項是 0 和 1;
s1=fibona(n-1);
s2=fibona(n-2);
這 2 句話是儲存所需序列中一項的前 2 項,如果第三項是必需的,則 s1 = 第二項,s2 = 第二項,它們分別稱為斐波納函式來找出;
return(s1+s2);
找到 s1 表示的項的後一項。
-
這是一種遞迴方法,比較難解釋,讓我試試是用數列來認識的,第一項是1,第二項是1,第三項是2......
從第三項開始,每項都是前兩項之和,因此,if(n==1||n==2)return(n-1)
也就是說,當你找到第一項或第二項的值時,它返回 n 1,但我想你在這裡錯了,它應該返回 1,因為第一項和第二項都是 1
s1=fibona(n-1);
s2=fibona(n-2);
return(s1+s2);
當第一項和第二項不是必需的時,則其值是前兩項的總和,因此讓兩個變數 s1、s2 和 s1 儲存前一項的值,s2 儲存 s1 的第一項,然後返回兩者的總和。
-
斐波那契是 0, 1, 1, 2, 3, 5 ,..ai,a(i+1),ai+a(i+1),.
if(n==1||n==2)
return(n-1);
這句話就是找初始值!
最後一項都是前兩項的總和! 所以首先計算前兩個專案,然後將兩個專案相加,這就是結果。
-
遞迴法比較難解釋,房東你代數算進去,然後畫在紙上,一走就明白了。
-
在第乙個問題中,問題中的 zhi:dao 工作變數表示乙個臨時變數,所以它屬於第二個問題:不僅支援數字字元,還支援其他型別的字元。 大錯特錯。
問題 3:沒錯,這是乙個無限迴圈,除非你最終陷入乙個迴圈。