總結:遞迴寫完以後要盡量帶回去檢驗一下。
妄圖直接以遞迴的形式輸出斐波那契數列:
#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...