所以,我是javascript的新手,并且 - 在完成了对codecademy的JS单元之后,我正在通过Project Euler工作以更好地感受这种语言。问题在于我坚持第二次挑战。在这一点上我觉得很愚蠢。问题是找到所有偶数斐波纳契数不到四百万的总和。
var fib = [1,2];
var stack = [];
for (i = 2; i < 4000000; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
}
那部分有效。我使用JSFiddle,它将打印出最多四百万的斐波纳契序列。问题是下一部分:
for (j = 0; j < fib.length; j++) {
if (fib[i] % 2 === 0) {
stack[j] = fib[i];
}
}
我在for循环的内外尝试了这一点,我无法弄清楚这一点。我有这种感觉,我错过了一些明显的东西。任何帮助,将不胜感激。谢谢:D
编辑:我明白了。谢谢大家!这就是我的所作所为:var total = 0;
var fib = [1, 2];
//In my first attempt, I made a set of the first 4,000,000
//fibonacci numbers. I just left the "4000000" there
//arbitrarily.
for (i = 2; i < 4000000; i++) {
//This makes sure that I don't go over 4000000 in the array.
if (fib[i - 1] < 4000000) {
fib[i] = fib[i - 1] + fib[i - 2];
}
}
for (j = 0; j < fib.length; j++) {
if (fib[j] % 2 === 0) {
total += fib[j];
}
}
alert(total);
它打印出正确的答案!活泉。
答案 0 :(得分:1)
替换此
for (j = 0; j < fib.length; j++) {
if (fib[i] % 2 === 0) {
stack[j] = fib[i];
}
}
用这个
for (j = 0; j < fib.length; j++) {
if (fib[j] % 2 === 0) {
stack[j] = fib[i];
}
}
此外,问题是只发现斐波那契数字低于4_000_000。没有必要创建400万个斐波纳契数。那需要永远。尝试像70这样的小东西。
答案 1 :(得分:-1)
我看到了几个问题。
你说你想找到所有偶数斐波纳契数的总和?我没有意识到将偶数结果放入另一个数组然后处理它们。尝试这样的事情:
var fib = [1,2];
var result = 0;
for (i = 2; i < 4000000; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
}
for (j = 0; j < fib.length; j++) {
if(fib[j] % 2 == 0){
result = result + fib[j];
}
}
其次,你把它称为&#34;所有甚至斐波纳契数都不到400万&#34;。你确定他们想要的是前400万个斐波那契数,还是需要400万以下的斐波纳契数?