首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java的基础:项目Euler问题

Java的基础:项目Euler问题
EN

Stack Overflow用户
提问于 2018-04-24 19:55:21
回答 1查看 94关注 0票数 1

Fibonacci序列中的每个新项都是通过添加前两个项来生成的。从1和2开始,头10个术语将是:

1、2、3、5、8、13、21、34、55、89、

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

我的代码:

代码语言:javascript
运行
复制
    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

我将非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-21 22:22:06

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

下面你可以找到我的变体,得到数列中所有偶数项的和,不超过百万。

代码语言:javascript
运行
复制
 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50009829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档