Javascript循环遍历斐波那契数并测试偶数

Javascript循环遍历斐波那契数并测试偶数,javascript,arrays,loops,if-statement,Javascript,Arrays,Loops,If Statement,我试图“显示前50个偶数斐波那契数的总和”,但目前得到的输出是错误的 我需要: 创建一个生成斐波那契数的循环 测试每一个是偶数还是奇数 把偶数加起来,边走边数 我是JavaScript新手,很难让代码正常工作。非常感谢您的帮助/指导。这是一种更好、更简单的方法吗 ------------这是我到目前为止的代码-------- 求和 前50个偶数斐波那契数之和为: var getFibSum=document.getElementById(“sumFib”); getFibSum.onclick

我试图“显示前50个偶数斐波那契数的总和”,但目前得到的输出是错误的

我需要:

  • 创建一个生成斐波那契数的循环

  • 测试每一个是偶数还是奇数

  • 把偶数加起来,边走边数

  • 我是JavaScript新手,很难让代码正常工作。非常感谢您的帮助/指导。这是一种更好、更简单的方法吗

    ------------这是我到目前为止的代码--------

    求和
    前50个偶数斐波那契数之和为:
    var getFibSum=document.getElementById(“sumFib”); getFibSum.onclick=函数(){ fiftyEvenFibonacciSum(); } 函数fiftyEvenFibonacciSum(){ var-loopFib; //初始化斐波那契数组 var fibonacci=新数组(); //添加斐波那契数组项 斐波那契[0]=0; 斐波那契[1]=1; var总和=0; //因为需要150个fib数字才能得到50个偶数,所以循环通过那个多个。
    对于(loopFib=2;loopFib试试这个,我已经添加了计数器,在达到50后停止执行偶数相加,让我看看是否有效

        var fibonacci = new Array();
    
    //Add fibonacci array items
    fibonacci[0] = 0;
    fibonacci[1] = 1;
    var sum=0;
    
    //Since it takes 150 fib numbers to obtain 50 even, loop through that many.
    var counter=0;
    for(loopFib=2; loopFib<=150; loopFib++) {
    
        // Next fibonacci number = previous + one before previous
        fibonacci[loopFib] = fibonacci[loopFib-2] + fibonacci[loopFib-1];
    
        //test for even numbers with if then statement
        var integer = parseInt(fibonacci[loopFib]);
    
        if (integer % 2 == 0  && counter < 50) {
            counter++;
            //Add up the even fib numbers if even and output into dispay variable
            var display = sum += fibonacci[loopFib];
        //console.log(fibonacci[loopFib]);   //output results to html page
                //console.log(counter);  
            document.getElementById("sumFibResult").innerHTML = display ;
    
    }
    }
    
    var fibonacci=new Array();
    //添加斐波那契数组项
    斐波那契[0]=0;
    斐波那契[1]=1;
    var总和=0;
    //因为需要150个fib数字才能得到50个偶数,所以循环通过那个多个。
    var计数器=0;
    对于(loopFib=2;loopFib我是这样做的

    let num = 1;
    let sum = 0;
    let counter = 0;
    
    function evenCheck(x)
    {
        if(x%2===0)
        {
            return true;
        }
    return false;
    }
    
    for(let i=0; i<1000; i+=num)
    {
        num += i;
        if(counter>=50)
        {
            break;
        }
        if(evenCheck(i))
        {
            sum += i;
            counter++;
        }
        if(evenCheck(num))
        {
            sum += num;
            counter++;
        }
    }
    console.log(sum);
    
    让num=1;
    设和=0;
    设计数器=0;
    功能检查(x)
    {
    如果(x%2==0)
    {
    返回true;
    }
    返回false;
    }
    for(设i=0;i=50)
    {
    打破
    }
    如果(检查(i))
    {
    总和+=i;
    计数器++;
    }
    如果(偶数检查(num))
    {
    sum+=num;
    计数器++;
    }
    }
    控制台日志(总和);
    
    您可能应该修改循环,使其继续运行,直到找到50个偶数(使用计数器),然后停止。顺便说一句,0是偶数。:-“如果它有效,请告诉我”。除非您已经知道它有效,否则您不应该发布它。我仍然收到一个奇怪的输出“9.715575428267785e+30”-前50个偶数fib数字将远远超过9.7!有什么想法吗?我已经修改了上面的代码,现在检查,它工作了
    let num = 1;
    let sum = 0;
    let counter = 0;
    
    function evenCheck(x)
    {
        if(x%2===0)
        {
            return true;
        }
    return false;
    }
    
    for(let i=0; i<1000; i+=num)
    {
        num += i;
        if(counter>=50)
        {
            break;
        }
        if(evenCheck(i))
        {
            sum += i;
            counter++;
        }
        if(evenCheck(num))
        {
            sum += num;
            counter++;
        }
    }
    console.log(sum);