遞迴錯誤1 Fibonacci數列犯過的錯誤

2021-09-25 18:24:31 字數 507 閱讀 9719

總結:遞迴寫完以後要盡量帶回去檢驗一下。

妄圖直接以遞迴的形式輸出斐波那契數列:

#include #include int fibo(int n)

else

}int main()

這段**是錯誤的,錯誤在printf函式的使用上,如果把3代入遞迴就可以看出問題所在,f = fibo(2)+fibo(1),此時fibo(2)繼續遞迴,f = fibo(0)+fibo(1),fibo(1)返回1,fibo(0)返回0,f=1,沒問題,但是會列印乙個1(由n=1列印的)。然後到上一層迴圈,fibo(2)列印乙個1。最後一層,fibo(1)列印乙個1,最後f(3)列印乙個2。

結果為:1 1 1 2 明顯是有問題的。

正確**如下:

//返回第n個斐波那契數列的值

int fibo(int n)

else

}int main()

Fibonacci數列 遞推 遞迴

無窮數列1,1,2,3,5,8,13,21,34,55,稱為fibonacci數列。它可以遞迴地定義為 第n個fibonacci數可遞迴地計算如下 int fibonacci int n 編寫完整的主函式,分別記錄利用上述遞迴函式求第45,46,47,48個fibonacci數所花費的時間。程式 p...

遞迴 迴圈實現Fibonacci數列

程式實現的 1 1 2 3 5 8 13 21 34 55 這麼乙個數列的功能 數列索引index 1,2 n 方法一 利用函式遞迴實現fibonacci數列 include include define n 10 static int print fibonacci int index int m...

非遞迴實現fibonacci數列

下面用兩個方法實現fibonacci數列,乙個是遞迴的,乙個是非遞迴的,由於遞迴需要不斷的開闢新的棧,並釋放開闢的棧,因而更耗時,但是在理解上卻容易些。include iostream include time.h using namespace std intrecursive method in...