我对 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/

10-11 19:56