DAY34:Product of consecutive Fib numbers


Posted by birdbirdmurmur on 2023-08-15

題目連結

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,ba * b === prod的判斷


#javascript #Codewars #while







Related Posts

magick - 非常實用的圖片轉檔工具

magick - 非常實用的圖片轉檔工具

原始型別的包裹物件

原始型別的包裹物件

JS Advanced --物件導向基礎與 prototype

JS Advanced --物件導向基礎與 prototype


Comments