前端JS演算法之斐波那契

2021-10-10 21:30:00 字數 1209 閱讀 5219

斐波那契(兔子數列):由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 開始,之後的斐波那契數列係數就由之前的兩數相加。常用的計算斐波那契數列的方法分...