作者:link
介紹幾種使用javascript實作斐波那契數列的方法。
其中第一種和第二種都是使用遞歸:(可優化,應該将每一個元素的值緩存起來,而不是每次遞歸都計算一次)。
這裡可以說一下JS函數實參對象的<code>callee</code>屬性。JS函數的實參對象定義了<code>callee</code>和<code>caller</code>屬性。在ES5嚴格模式中,對這兩個屬性的讀寫操作都會産生一個類型錯誤(TypeError)。而在非嚴格模式下,ES标準規範規定<code>callee</code>屬性指代目前正在執行的函數。<code>caller</code>是非标準的,但大多數浏覽器都實作了這個屬性,它指代調用目前正在執行的函數的函數。通過caller屬性可以通路調用棧。callee屬性在某些時候會非常有用,比如在匿名函數中通過callee來遞歸地調用自身。
第三種用的非遞歸。
第四種也是非遞歸,但是利用了黃金比率1.618,不過要注意的是這種方法在n>69之後,性能就會下降很快,參考文章看這裡:http://www.mathsisfun.com/numbers/fibonacci-sequence.html。
原文連結:http://ivweb.io/topic/5621116734764b2c1676973a