js實現斐波那契數列

2021-07-26 18:31:49 字數 1053 閱讀 2226

輸入n,求fibonacci數列的第n項

function fibonacci(n) 

if (n == 0)

if (n == 1)

return fibonacci(n-1) + fibonacci(n-2);

}

這其實並不是很好的方法

比如求fibonacci(10)的時候,分解成了fibonacci(9)和fibonacci(8),但是fibonacci(9)又會分解成fibonacci(8)和fibonacci(7),其中就重複計算了fibonacci(8),以此類推,重複的計算非常多,最簡單的辦法就是記錄下已經計算過的值:

function fibonacci2(n) 

if (arr[n] != undefined)

let data = calc(n-1) + calc(n-2);

arr[n] = data;

return data;

} return calc(n);

}function fibonaccifunc()

let data = calc(n-1) + calc(n-2);

arr[n] = data;

return data;

} return calc;

}

let fibonacci3 = fibonaccifunc();

上面兩種方法用到了閉包

fibonacci3的壞處是只要fibonacci3不被釋放, 記憶體中arr陣列會一直存在。尤其當計算過比較大的數字後;但是當需要大量的計算fibonacci數時,fibonacci3會比較有優勢,但是要記住最後釋放fibonacci3,即:

fibonacci3 = null;
還有一種方法就是不用遞迴,直接迴圈

function fibonacci4 (n) 

return data;

}

// 以上方法《劍指offer>中更加詳細的說明

js實現斐波那契數列

遞迴 斐波那契數列是這樣的乙個數列,1,1,2,3,5,8,即前兩項都是1,後面每一項都是其前面兩項的和。臨界值 小於2 都是1 公式 fbnq 3 fbnq 2 fbnq 1 fbnq 4 fbnq 3 fbnq 2 function fbnq mouth return fbnq mouth 1 ...

js實現斐波那契數列

輸入n,求fibonacci數列的第n項 function fibonacci n if n 0 if n 1 return fibonacci n 1 fibonacci n 2 這其實並不是很好的方法 比如求fibonacci 10 的時候,分解成了fibonacci 9 和fibonacci ...

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...