Fibonacci數列 遞推 遞迴

2021-08-28 14:07:06 字數 1107 閱讀 2430

無窮數列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...