我对 C# 编程很陌生,并认为尝试 Euler 问题作为入门基础是一个好主意。但是,我已经到了似乎无法得到问题 2 的正确答案的地步。
“斐波那契数列中的每个新项都是通过将前两项相加而生成的。从 1 和 2 开始,前 10 项将是:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
通过考虑 Fibonacci 数列中值不超过 400 万的项,找出偶数项的总和。”
我的代码是这样的:
int i = 1;
int j = 2;
int sum = 0;
while (i < 4000000)
{
if (i < j)
{
i += j;
if (i % 2 == 0)
{
sum += i;
}
}
else
{
j += i;
if (j % 2 == 0)
{
sum += j;
}
}
}
MessageBox.Show("The answer is " + sum);
基本上,我认为我只得到序列的最后两个偶数并将它们相加 - 但我不知道如何获取序列的所有偶数并将它们相加。有人可以帮助我,同时尝试从我的起点进步吗?
附言- 如果有任何非常糟糕的布局选择,请说现在消除这些将帮助我在 future 成为一个更好的程序员:)
非常感谢。
最佳答案
我刚刚登录到我的 Project Euler 帐户,以查看正确答案。正如其他人所说,您忘记添加初始项 2, 但否则您的代码是可以的 (正确答案是您的代码输出 + 2),做得好!
虽然这很令人困惑,但我认为如果您使用 3 个变量,它看起来会更清晰,例如:
int first = 1;
int second = 1;
int newTerm = 0;
int sum = 0;
while (newTerm <= 4000000)
{
newTerm = first + second;
if (newTerm % 2 == 0)
{
sum += newTerm;
}
first = second;
second = newTerm;
}
MessageBox.Show("The answer is " + sum);
关于c# - 欧拉项目 - 编号 2 - C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7999824/