gpt4 book ai didi

javascript - 所有奇数斐波那契数之和,直到 n

转载 作者:行者123 更新时间:2023-11-30 14:00:47 25 4
gpt4 key购买 nike

我被困在总结到数字 10 上。做不对。我得到的是 10 位数字的总和(过滤奇数后只有 7 位)。我应该在哪里制作 <= num ?

function sumFibs(num) {
var fib = [1, 1];
for (var i = 2; i < num; i++) {
var next = fib[i - 1] + fib[i - 2];
var fibi = fib.push(next);
}

return fib.filter(function(a) {
return (a % 2 != 0);
})
.reduce(function(a, z) {
return a + z;
})
}
console.log(sumFibs(10));

预期输出 10,但得到 99

最佳答案

添加a < num到你的过滤器回调测试,所以你得到 a % 2 && a < num

function sumFibs(num) {
var fib = [0, 1];
for (var i = 2; i < num; i++) {
var next = fib[i - 1] + fib[i - 2];
var fibi = fib.push(next);
}
return fib.filter(function (a) {
return a % 2 && a < num;
}).reduce(function (a, z) {
return a + z;
}, 0);
}

console.log(sumFibs(0))
console.log(sumFibs(1))
console.log(sumFibs(10))
console.log(sumFibs(9000))

如果你只需要这些数字的总和,你根本不需要使用数组

function sumFibs(num) {
if(num <= 1) return 0;
var a = 0, b = 1, sum = a + b;
while(true) {
var next = a + b;
if(next >= num) {
break;
}
if(next % 2) {
sum += next;
}
a = b;
b = next;
}
return sum
}
console.log(sumFibs(0))
console.log(sumFibs(1))
console.log(sumFibs(10))
console.log(sumFibs(9000))

关于javascript - 所有奇数斐波那契数之和,直到 n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56342441/

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