5 kyu
斐波那契數:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ...
也就是該項為前兩項相加,0 + 1 ⇒ 1、1 + 1 ⇒ 2 依此類推。
函數傳入參數 prod,回傳前兩項相乘後 = prod,或者 n * n+1 > prod 的最小結果。
斐波那契數勢必要從頭開始計算到接近 prod。
變數儲存 n 與 n1,while 迴圈跑小於 prod,累積相乘後取得結果。
isProd = false 紀錄是否 === prod,先預設為否
n = 0
n1 = 1
while n * n1 < prod
n 與 n1 做斐波那契數++處理
if(n*n1 === prod)
isProd = true
return [n, n1, isProd]
function productFib(prod) {
let isProd = false;
let n = 0;
let n1 = 1;
while (n * n1 < prod) {
let temp = n1;
n1 = n + n1;
n = temp;
}
if (n * n1 == prod) {
isProd = true;
}
return [n, n1, isProd];
}
用變數儲存要輸出的資料。
while 迴圈在 n * n1 > prod
之前,會持續做斐波那契數處理。
參照斐波那契數列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ...
假設 n = 5, n1 = 8,下一輪的 n 與 n1 應該是 8 與 13。
把 n1 先暫存到 temp;也就是 temp = 8。
n1 先做處理,5 +8 ⇒ 13;最後把暫存的 temp 給 n = temp = 8。
最後用陣列形式返回變數。
颱風開始影響台灣,希望沒有任何災情~