PHP演算法之斐波那契數列 遞迴

2022-09-17 22:36:10 字數 1173 閱讀 1573

/*

斐波那契數列 源**分析

f(x) = 1 ; 當 x < 2 ;

f(x) = f(x-1)+f(x-2); 當 x >= 2 ;

通項式為:fn =/(根號5)

則根據通項式建構函式求fn;

*///

計時函式 console.time() //計時開始 console.timeend() //計時結束並輸出時長

console.time();

vari;

vartotal;

//方法一 使用原始方法

function

fibo(i)

else

if(i == 1)

else}//

方法二 使用迭代解法, 將每一次執行的資料儲存起來,時間會大大縮短

function

fibo1(i)

var pre = 1;

var prepre = 1;

for(j = 2; j <= i; j++)

return

total;

}console.log(fibo(40));//結果為:165580141 時間為:2313.9990234375ms;

console.log(fibo1(40));//結果為:

165580141 時間為:0.805908203125ms;

console.timeend();
對比結果可能fibo1函式明顯比fibo函式優化的明顯,時間複雜度為o(x);

fibo1的思路為:將每一次遞迴的數值儲存起來,後期就不需要再次的尋找;

關於斐波那契數列優化的方法還有很多,這裡先將這一種,還有一些涉及到比較難懂的高等數學,對於初學者會比較的難學;

注意:上述**為js**,請嵌入到html檔案中執行;

計時函式 console.time() //計時開始

console.timeend() //計時結束並輸出時長

單位以ms來計算;

遞迴演算法斐波那契數列

有一對兔子,從出生後第3個月起,每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子。假如兔子都不死,求第n個月兔子對數 關於斐波那契數列的兔子繁殖問題其實如下 實際月份 123 4567 8幼仔對數 101 1235 8成兔對數 011 2358 13總體對數 112 35813 21幼仔對...

斐波那契數列之遞迴

斐波那契數列,又稱 分割數列,指的是這樣乙個數列 0 1 1 2 3 5 8 13 21 在數學上,斐波納契數列以如下被以遞迴的方法定義 f0 0,f1 1,fn f n 1 f n 2 n 2,n n 斐波那契數列最初是為了計算兔子的出生數量而出現的,所以也叫 兔子數列 遞迴的本質其實程式的方法自...

PHP遞迴實現斐波那契數列

指令碼執行示例 php fibonacci.php php fibonacci.php 10 可加引數,一共輸出10個斐波那契數 echo n 定義乙個斐波那契類 class fibonacci else return0 迴圈列印出n個斐波那契數 function work num for i 0 ...