用于循环的Javascript Euler Fibonacci

用于循环的Javascript Euler Fibonacci,javascript,for-loop,fibonacci,Javascript,For Loop,Fibonacci,我在做Euler项目问题2,其中的目标是对fibonacci序列的偶数求和,其值小于400万。我已经搜索了一些,我看到了几个使用while循环的解决方案,但是没有简单的使用for循环。我很好奇为什么我用下面的代码返回零: var array = []; array[0] = 0; array[1] = 1; var total = 0; for(var i=2;total<=4000000;i++) { array[i] = array[i-1] + array[i-2];}; f

我在做Euler项目问题2,其中的目标是对fibonacci序列的偶数求和,其值小于400万。我已经搜索了一些,我看到了几个使用while循环的解决方案,但是没有简单的使用for循环。我很好奇为什么我用下面的代码返回零:

var array = [];
array[0] = 0;
array[1] = 1;

var total = 0;

for(var i=2;total<=4000000;i++) {
array[i] = array[i-1] + array[i-2];};


for(var x=0;x<array.length;x++){
if(array[x]%2 === 0){
total += array[x]};};

alert(total);
var数组=[];
数组[0]=0;
数组[1]=1;
var合计=0;
对于(var i=2;total我为您确定了它

var i, data = [ 0, 1 ], total = 0;

for (i = 2; i <= 4000000; i++)
{
    data[i] = data[i - 1] + data[i - 2];

    if (data[i] % 2 === 0)
    {
        total += data[i];
    }
}

alert(total);
vari,数据=[0,1],总计=0;

对于(i=2;i首先,对于
,首先有一个无限循环。您的条件必须是数组[i-1]<4000000
。然后,您的第二个for循环将找到正确的结果

同样对于这个问题,您不需要存储所有斐波那契数,然后找到偶数之和。 计算斐波那契时,可以计算和

var first = 0;
var second = 1;
var sum = 0;

for(var current=first+second; current < 4000000; current = first+second){
    if(current%2 === 0){
        sum+=current;
    }
    first = second;
    second = current;
}
var-first=0;
var秒=1;
var总和=0;
用于(无功电流=第一+第二;电流<4000000;电流=第一+第二){
如果(当前%2==0){
总和+=电流;
}
第一=第二;
秒=电流;
}

很抱歉,但对我来说,您的代码陷入了死循环。首先“for”使用总计作为检查,但它永远不会递增。如果您需要,这是一个基于dinamic编程和Memorization tecnic的斐波那契序列解决方案

var f1 = 1;
 var f2 = 1;

 for(var i = 2; i < 40000; i++){
  console.info(i, f1, f2);
  var temp = f1 + f2;
  f1 = f2;
  f2 = temp;
 }

 alert(f2);
var f1=1;
var f2=1;
对于(变量i=2;i<40000;i++){
控制台信息(i、f1、f2);
var-temp=f1+f2;
f1=f2;
f2=温度;
}
警报(f2);

这甚至不会终止将挂起,因为条件
totalYes,循环不会终止。将第二个for循环嵌套在第一个for循环中。您的条件无效,因为问题要求fibonacci序列的值小于
4000000
,您将使用第4000000个序列。而且
f0
0
。它是一个无限循环吗因为在你的问题中数组[2]有total