我是解決問題的新手。我找到了用于查找nth Fibonacci number. 但我對一些變數的作業感到困惑。
var fibonacci = function (n) {
let prev = 0,
cur = 1,
temp;
for (let i = 1; i < n; i ) {
temp = cur;
cur = cur prev;
prev = temp;
}
return cur;
};
你能描述一下temp curandprev變數在做什么嗎?尤其是temp變數。
謝謝!
uj5u.com熱心網友回復:
不要難過,該代碼很難遵循。這是一個更簡單的版本,它使用新的 javascript 功能來避免temp變數:
function fib(n) {
let prev = 0;
let curr = 1;
for(let i=1; i<n; i ) {
[prev, curr] = [curr, curr prev];
}
return curr;
}
或者,不使用新的 javascript 特性來允許交換,可以更清楚地編碼如下:
function fib(n) {
let prev = 0;
let curr = 1;
for(let i=1; i<n; i ) {
let next = curr prev;
prev = curr;
curr = next;
}
return curr;
}
uj5u.com熱心網友回復:
- temp 表示暫時的
- cur 表示當前
- prev 表示以前的
temp 是必需的,因為您必須將 cur 分配為 cur prev,同時您需要將 prev 分配為 cur。
如果沒有 temp 如果您這樣做cur = cur prev,您將無法分配prev = cur,因為 cur 已經更改。
換句話說,更新 cur 需要 prev,更新 prev 需要 cur,在 temp 的幫助下,我們可以將舊 cur 保存為 temp,并使用 old prev 獲取新 cur,然后使用 temp update prev。
這是一個例子:
如果我們有這樣的價值觀:
let prev = 1,
cur = 2,
temp;
在回圈我們會做
temp = cur; // temp is 2
cur = cur prev; // cur is 3
prev = temp; // prev is 2
如果在回圈中我們沒有使用 temp:
cur = cur prev; //cur is 3
prev = cur; // prev is 3
prev 是 3,這是錯誤的。
uj5u.com熱心網友回復:
基本上,斐波那契數是前兩個斐波那契數的總和,以兩個 1 開頭。
意思是,for 回圈回圈n通過回圈來獲得nth斐波那契數。代碼所做的只是將(n-2)th數字存盤到一個變數中,將數字存盤到第二個變數中,并通過添加 (n-1)th來計算數字。nth(n-2)th(n-1)th
之后,它從(n-1)th存在(n-2)th和存在nth重新開始(n-1)th。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519820.html
