無窮數列1,1,2,3,5,8,13,21,34,55,……,稱為fibonacci數列。它可以遞迴地定義為:
第n個fibonacci數可遞迴地計算如下:
int fibonacci(int n)
編寫完整的主函式,分別記錄利用上述遞迴函式求第45,46,47,48個fibonacci數所花費的時間。
程式**:
package sf;
public class sy2_1_1
} int fibonacci(int n)
}
執行結果:
求第45個fibonacci數所花費的時間為5020ms
求第46個fibonacci數所花費的時間為7785ms
求第47個fibonacci數所花費的時間為12588ms
求第48個fibonacci數所花費的時間為22190ms
2.將遞迴函式改為尾遞迴,或者是遞推函式,求第45,46,47,48個fibonacci數所花費的時間,觀察效率是否得到提高。
程式**:
package sf;
public class sy2_1_2 {
public static void main(string args) {
int array = new int[50];
array[0]=array[1]=1;
long time;
for(int n=45;n<=48;n++){
long start=system.currenttimemillis();
for(int j=2;j執行結果:
求第45個fibonacci數所花費的時間為0ms
求第46個fibonacci數所花費的時間為0ms
求第47個fibonacci數所花費的時間為0ms
求第48個fibonacci數所花費的時間為0ms
效率提高!
Fibonacci數列 C 遞推思想
輸入乙個正整數n,求fibonacci數列的第n個數。fibonacci數列的特點 第1,2個數為1,1。從第3個數開始,概述是前面兩個數之和。即 要求輸入的正整數n不超過50.輸入 乙個不超過50的正整數 輸出 fibonacci數列的第n個數,末尾輸出換行。樣例輸入 20樣例輸出6765本題是一...
遞迴 迴圈實現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...