斐波那契(兔子數列):由0和1開始,之後的斐波那契數列每一項都等於前兩項之和。
斐波那契數列示例:1、1、2、3、5、8、13、21、34
邏輯步驟:
1、求第n項的斐波那契數,就是就n項的前兩項相加,前一項是n-1,前兩項就是n-2。
2、第n項斐波那契數就是(n-1) + (n-2),這樣我們就可以使用遞迴。
3、遞迴是什麼?遞迴就是函式自己呼叫自己。
4、自己呼叫自己,那我們就可以用arguments.callee。(ps:arguments是乙個類陣列物件,它包含著傳入函式的所有引數。arguments有乙個屬性callee,該屬性是乙個指標,指向擁有這個arguments物件的函式)
接下來看**
第一種方法:
function
fibonacci
(n);
// 使用arguments.callee實現遞迴
return arguments.
callee
(n -2)
+ arguments.
callee
(n -1)
;}let sum =
fibonacci(8
)console.
log(sum)
// 21
我們雖然使用遞迴實現了輸出第n項的斐波那契數,但是,遞迴太浪費瀏覽器資源了,如果第n項數字太大,執行速度將會大大加長,所以我們使用for迴圈優化一下。
第二種方法:
function
fibonacci
(nub)
for(
let i =
2; i < n; i++
)return f
}let sum =
fibonacci(8
) console.
log(8)
// 21
第三種方法:
function
fibonacci
(n)// 使用解構賦值,n1 等於 n2,n2 等於 n1 + n2 最後返回 n2
for(
let i =
2; i < n; i++
)return n2
}
斐波那契演算法
其思想與折半查詢 插值查詢沒有多大區別,本質上只是分割點的選擇不同。斐波那契查詢需要構造斐波那契數列,該數列的作用就是提供分割點 好多演算法書都沒有介紹清楚啊!參閱折半查詢 插值查詢以及斐波那契查詢 1 演算法首先找到構造乙個查詢表,即在原來的陣列上新增元素,使得該查詢表 陣列 的長度為某個斐波那契...
演算法之斐波那契數列
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 斐波那契當時是為了描述如下情況的兔子生長數目 第乙個月初,有一對剛誕生的兔子 第二個月之後 第三個月初 它們可以生育 ...
js 斐波那契數
斐波那契數,指的是這樣乙個數列 1 1 2 3 5 8 13 21 在數學上,斐波那契數列以如下被以遞迴的方法定義 f0 0,f1 1,fn fn 1 fn 2 n 2,n n 用文字來說,就是斐波那契數列由 0 和 1 開始,之後的斐波那契數列係數就由之前的兩數相加。常用的計算斐波那契數列的方法分...