在編程語言中,斐波那契數列是一個廣為人知的算法,它在數學中也有很重要的地位。而在JavaScript中,我們同樣可以用代碼實現這個算法。
斐波那契數列的規律是每個數字是前兩個數字之和,即:1、1、2、3、5、8、13……以此類推。這個規律似乎很簡單,但當我們需要在代碼中實現這個規律時,就需要用到一些技巧。
在JavaScript中,我們可以使用遞歸的方式來編寫斐波那契數列的代碼。比如,下面這個函數實現的是輸出斐波那契數列的前N項:
function fibonacci(n){ if(n===1 || n===2){ return 1; }else{ return fibonacci(n-1) + fibonacci(n-2); } }這個函數的原理是:當n等于1或者2時,返回1;當n大于2時,返回n-1和n-2這兩個數的斐波那契數列之和。 如果我們要輸出前20項斐波那契數列的代碼,可以這樣寫:
for(var i=1;i<=20;i++){ console.log(fibonacci(i)); }運行結果是:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765。 當然,如果你的代碼需要處理更大的數列,可以使用優化后的代碼來避免過多的遞歸調用。我們可以用一個數組來保存已經計算過的值,以免重復計算。比如下面這個代碼:
var fibonacci = (function () { var memo = {}; function f(n) { var value; if (n in memo) { value = memo[n]; } else { if (n === 0 || n === 1) value = n; else value = f(n - 1) + f(n - 2); memo[n] = value; } return value; } return f; })();這個代碼可以避免重復計算,提高代碼效率。我們可以嘗試輸出前50項斐波那契數列,看一下效果:
for(var i=0;i<=50;i++){ console.log(fibonacci(i)); }輸出結果是:0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 2971215073 4807526976 7778742049 12586269025。 斐波那契數列在實際開發中并不常見,但它卻經常用于理解遞歸算法的基本原理。無論是在業余還是職業開發者的道路上,熟練掌握斐波那契數列算法都非常重要。
下一篇css外鏈代碼格式