我必须完成这个练习,而且我没有得到我需要的结果。
规范是:计算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
有人可以帮我弄清楚我缺少的部分来完成这项练习吗?
非常感谢。
更新 谢谢大家发布解决方案的人。他们都很棒。
答案 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)
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;
答案 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/