“ javascript”中的Euler Q#2项目

时间:2018-07-20 13:31:14

标签: javascript fibonacci

甚至小于4密尔的斐波那契数之和:我试图使用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);

2 个答案:

答案 0 :(得分:0)

在进行编码之前,有两件事:

  • 您需要将斐波那契数的偶数相加,其值低于400万(@Alnitak)

  • 有一个“偶数斐波那契数列”,可以用see here的另一种方式来计算。

好的,我们开始:

let fib = [0, 2];

for(let i = 2; fib[i-1] < 4000000; i++) {
    fib[i] = 4 * fib[i - 1] + fib[i - 2];
}
fib.pop()

let sum = fib.reduce((a, c) => a + c, 0);

console.log(sum);

修改

没有我刚刚添加的fib.pop(),数组的最后一个元素将是数字> 4000000。现在您应该可以获得正确的结果。

答案 1 :(得分:0)

这就是问题所在:

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

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

通过考虑斐波那契数列中值不超过400万的项,找到偶数项的和。

正确答案是4613732。

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

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

var sum = 2;
var x = 1, y = 2, fib;

while(x < 4000000) {
   fib = x + y;
   x = y;
   y = fib;
   if(fib%2===0) sum += fib;
}

console.log(sum);