斐波那契數列定義如下:
當n=0時,f(0) = 0;
當n=1時,f(1) = 1;
當n>1時,f(n) = f(n-1)+f(n-2);
下面分別演示遞迴演算法和非遞迴演算法:
1.遞迴演算法
public
static
intfibonacci(int n) throws exception
斐波那契的遞迴演算法效率很低,效率低下的原因是重複計算值。當n=100時,慢的要死。
2.非遞迴演算法
/**
* 改進後的演算法
* *@param n
*@return
*@throws exception
*/public
static
long
fibonacci2(int n) throws exception
return fn;
}
遞迴演算法的變種:
乙隻青蛙一次可以跳上1級台階,也可以跳上2級,求該青蛙跳上乙個n級台階總共有多少種跳法。
分析:首先如果只有1級台階,顯然只有一種跳法。如果有2級台階,就有兩種跳法:跳兩個一級和一次跳兩級。
接著討論其他情況,如果有n級台階(n>1)。青蛙第一次跳的時候分兩種情況,第一次是跳一級,那麼就有f(n-1)種跳法,如果第一次跳兩級,那麼就有f(n-2)種跳法,所以f(n) = f(n-1)+f(n-2);典型的斐波那契數列。
斐波那契數列 斐波那契數列python實現
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...
迴圈斐波那契數列 斐波那契數列應用
什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...
JAVA實現 斐波那契數列
斐波那契數列是我在初中的數學課接觸到的,當時唯一對這個感興趣的是他的名字,因為一直在想是誰起了乙個這麼彆扭的名字 後來無知的我才發現原來是這麼一回事 斐波那契數列 是1202年萊昂納多 斐波那契提出的,當時只是為了解決乙個兔子繁殖的問題,後來再世人的研究與拓展,發現他有非常廣泛的應用。下面我們用程式...