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