JavaScript:计算Fibonacci序列值中所有偶数的总和< 10000

时间:2016-03-21 21:18:28

标签: javascript fibonacci

我必须完成这个练习,而且我没有得到我需要的结果。

规范是:计算Fibonacci序列中所有偶数的总和,以获得低于10,000的值。汇总的前几个数字将是: 2,8,34,144,610

我有一个产生这个输出的小提琴: 10,44,188,798,3382

var x = 1;
var y = 2;
var sum = 0;
var limit = 10000;
var evensum = 2;

while ((x + y) < limit) {
    sum = x + y;
    x = y;
    y = sum;

    if (sum % 2 === 0) {
        evensum += sum;
    }
    console.log(evensum);
}

小提琴link

有人可以帮我弄清楚我缺少的部分来完成这项练习吗?

非常感谢。

更新 谢谢大家发布解决方案的人。他们都很棒。

4 个答案:

答案 0 :(得分:8)

您正在打印出偶数的总和。如果要记录每个偶数fib数,则需要记录sum变量:

if (sum % 2 === 0) {
    evensum += sum;
    console.log(sum); // <---- log here
}
// console.log(evensum);

答案 1 :(得分:1)

只需将您的console.log行移到while循环之外。

while ((x + y) < limit) {
    sum = x + y;
    x = y;
    y = sum;

    if (sum % 2 === 0) {
        evensum += sum;
    }

    console.log('Sum: ' + sum);
}

console.log('Full Sum of even Fibonacci numbers: ' + evensum);

答案 2 :(得分:1)

&#13;
&#13;
var i;
var fib = []; // Initialize array!

fib[0] = 0;
fib[1] = 1;
for(i=2; i<=20; i++)
{
    // Next fibonacci number = previous + one before previous
    // Translated to JavaScript:
    fib[i] = fib[i-2] + fib[i-1];
    if(fib[i]%2==0){
      document.write(fib[i]+" ");
    }
}
&#13;
&#13;
&#13;

答案 3 :(得分:1)

var x = 0
var y = 1
var sum = 0;
var limit = 10000;
var evensum = 0;

while ((x + y) < limit) {
  sum = x + y;
  x = y;
  y = sum;
  if (sum % 2 == 0) {
  console.log(sum);
 }
}

工作小提琴 - https://jsfiddle.net/dotnojq8/1/