題目連結
https://www.codewars.com/kata/5541f58a944b85ce6d00006a
解法
第一版
function productFib(prod) {
let fn = [0, 1]
for (let i = 0; i < prod; i++) {
fn.push(fn[i] + fn[i + 1])
if (fn[i] * fn[i + 1] === prod) {
return [fn[i], fn[i + 1], true]
} else {
if (fn[i] * fn[i + 1] < prod && fn[i + 1] * fn[i + 2] > prod) {
return [fn[i + 1], fn[i + 2], false]
}
}
}
}
第二版:簡化
function productFib(prod) {
let [a, b] = [0, 1];
while (a * b < prod) {
[a, b] = [b, a + b];
}
return [a, b, a * b === prod];
}
筆記
第一版 用for迴圈印出Fib陣列
第二版 做一次簡化
用解構賦值 將[a,b]
設為[0,1]
這裡使用while簡化迴圈
並更新[a,b]
的值(往後挪一位)
最後回傳a
,b
和a * b === prod
的判斷