首页 > 解决方案 > Java基础:欧拉项目问题

问题描述

斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

求序列中所有不超过四百万的偶数项之和。

我的代码:

    int x = 0;
    int y = 1;
    int z;
    int sum = 0;


        for(int i = 0; i <= 4000000; i++)
        {
        z = x + y;
        x = y;
        y = z;
        if(y % 2 == 0)
        {
            sum = sum + y;
        }


    }
    System.out.println(sum);

}

那输出1110529254但是,正确的答案是4613732

帮助将不胜感激。

标签: java

解决方案


您的代码进行了 400 万次迭代,但它不会检查序列中所有偶数项的总和是否不超过 400 万。

您可以在下面找到我的变体,即获取序列中不超过百万的所有偶值项的总和。

 public class Example_1 {
    public static void main(String args[]) {

      int x = 0;
      int y = 1;
      int z;
      int sum = 0;

      while (true) {
          z = x + y;
          x = y;
          y = z;
          if(y % 2 == 0) {
             sum = sum + y;
          }
          if (sum >= 4000000){
              break;
          }
      }
      System.out.println("Sum: " + sum);
  }
}

我从这段代码中得到的答案4613732正如我们所料。


推荐阅读