项目Euler Q#2 in“;javascript";

项目Euler Q#2 in“;javascript";,javascript,fibonacci,Javascript,Fibonacci,小于4 mil的偶数斐波那契数之和:我试图使用JavaScript实现它,但我得到的答案是无穷大 但如果我使用较小的数字,比如10,我会得到console.log()输出结果,可以用JavaScript实现吗 var fib = [1, 2]; for(var i =fib.length; i<4000000; i++) { fib[i] = fib[i-2] + fib[i-1]; } //console.log(fib); var arr_sum = 0; for(v

小于4 mil的偶数斐波那契数之和:我试图使用JavaScript实现它,但我得到的答案是无穷大

但如果我使用较小的数字,比如10,我会得到console.log()输出结果,可以用JavaScript实现吗

 var fib = [1, 2];

for(var i =fib.length; i<4000000; i++)
{
    fib[i] = fib[i-2] + fib[i-1];
}

 //console.log(fib);
 var arr_sum = 0;
for(var i = 0; i < fib.length; i++){
    if(fib[i] % 2 === 0){
        arr_sum += fib[i] ;
    }
}

console.log(arr_sum);
var fib=[1,2];

对于(var i=fib.length;i在开始编码之前有两件事:

  • 您需要对值低于400万的偶数斐波那契数求和(@Alnitak)

  • 有一个“偶数斐波那契级数”,可以用不同的方式计算

好了,我们开始:

设fib=[0,2];
对于(设i=2;fib[i-1]<4000000;i++){
fib[i]=4*fib[i-1]+fib[i-2];
}
fib.pop()
让sum=fib.reduce((a,c)=>a+c,0);

console.log(sum);
这就是问题所在:

斐波那契序列中的每个新项都是通过将前两项相加生成的。从1和2开始,前10项将是:

1,2,3,5,8,13,21,34,55,89,

通过考虑Fibonacci序列中值不超过400万的项,找出偶数值项之和。

正确答案是4613732

在下面的脚本中,答案来自变量“sum”。我给它赋了一个初始值2,因为这是序列中的第一个偶数。我使用了另外3个变量遍历这个序列。循环运行正常的斐波那契序列,if语句过滤偶数并将其添加到sum中

我认为这是最简单、最直观的代码实现

var总和=2;
变量x=1,y=2,fib;
而(x<4000000){
fib=x+y;
x=y;
y=fib;
如果(fib%2==0)和+=fib;
}

console.log(sum);
您需要发布实际涉及的代码。您正在尝试对前400万个fib(n)求和-您只能对值低于4e6的fib(n)求和。好的,感谢您提供的信息,您得到了无穷大,因为在某一点上,该数字变得非常大,超出了js可以存储的范围。(正如我所注意到的1476个数字,准确地说是1=3069892237633987e+308)。这之后的每个数字都是无穷大的,因此它们的总和也是无穷大的)您好,谢谢您的回答,我运行了代码并得到了答案,但是从您的代码得到的值与我的不匹配,请再次交叉验证代码,我实际得到了答案4613732@G.Santosh我刚刚核实过,谢谢你的评论。