java實現斐波那契數列的幾種方法時間效率問題

2021-08-10 08:30:37 字數 518 閱讀 7987

這道兔子題的實質就是斐波那契數列: 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

1 1 2 3 5 8 13 …

方案一:遞迴演算法實現

public static long fib(int n)else

}

初看起來,使用遞迴演算法是最簡潔的。可是,如果將程式編碼病在n值為40左右時執行那麼這個程式讓人感到效率低的嚇人。n>4時,其時間效率為fib(n)>=(3/2)的n次方,這個程式執行的時間以指數的速度增長。這大概是最壞的情況。

方案二:陣列方式

public static int fib2(int n) 

}system.out.println(arrays.tostring(array));

return array[n - 1];

}

陣列方式的好處是只是用了乙個for迴圈,執行時間可以顯著降低。

JAVA實現 斐波那契數列

斐波那契數列是我在初中的數學課接觸到的,當時唯一對這個感興趣的是他的名字,因為一直在想是誰起了乙個這麼彆扭的名字 後來無知的我才發現原來是這麼一回事 斐波那契數列 是1202年萊昂納多 斐波那契提出的,當時只是為了解決乙個兔子繁殖的問題,後來再世人的研究與拓展,發現他有非常廣泛的應用。下面我們用程式...

java實現斐波那契數列

斐波納契數列 又稱 分割數列,指的是這樣乙個數列 1 1 2 3 5 8 13 21 在數學上,斐波納契數列以如下被以遞迴的方法定義 f0 0,f1 1,fn f n 1 f n 2 n 2,n n public class fibonacci 遞迴實現方式 public static int fi...

java實現斐波那契數列

如下 fibonacci 為 1200 年代的歐洲數學家,在他的著作中曾經提到 若有乙隻免子每個月生乙隻 小免子,乙個月後小免子也開始生產。起初只有乙隻免子,乙個月後就有兩隻免子,二個月後有三 只免子,三個月後有五隻免子 小免子投入生產 這就是 fibonacci 數列,一般習慣稱之為費氏數列,例如...