gpt4 book ai didi

javascript - FreeCodeCamp 的“奇数斐波那契数之和”任务是否有递归版本?

转载 作者:行者123 更新时间:2023-12-03 04:48:28 24 4
gpt4 key购买 nike

引用How can I get the sum of all odd fibonacci vales in javaScript?来自 FCC 的可能解决方案如下所示:

function sumFibs(num) {
let prevNumber = 0;
let curNumber = 1;
let result = 0;

while (curNumber <= num) {
if (curNumber % 2 !== 0) {
result += curNumber;
}
curNumber += prevNumber;
prevNumber = curNumber - prevNumber;
}
return result;
}

我想稍微扩大一下问题的范围:你认为有可能使用递归算法吗?我想没有。您对此有何看法?这是“仅迭代”的情况吗?

最佳答案

你可以使用闭包来保证变量作用域的安全,那么递归就很简单了。

我将变量移动到一个对象中,以便在函数完成后可以使用 Object.assign 轻松重置它们。

const sumFibs = (() => {
const o = { p: 0, c: 1, r: 0 };
const d = Object.assign({}, o);

const sumFibs = n => {
if (o.c >= n) {
const t = o.r;
Object.assign(o, d);
return t;
}

if (o.c % 2 !== 0)
o.r += o.c;

o.c = o.c + o.p;
o.p = o.c - o.p;

return sumFibs(n);
}

return sumFibs;
})();

console.log(sumFibs(100)); // 188

关于javascript - FreeCodeCamp 的“奇数斐波那契数之和”任务是否有递归版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42762589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com