java - 这是求斐波那契数列中偶数之和的正确方法吗?

标签 java

这是求斐波那契数列中偶数之和的正确方法吗?我在使用小范围时得到了正确的答案。在使用 int 时得到负值,在使用 long 时得到正数。

public class t {
    public static void main(String args[]){
      int i1=1,sum;
      int i2 = 2,temp;
      System.out.println(i1);
      System.out.println(i2);
      sum = i2;

      for(int i = 2; i<4000000; i++){
        //System.out.println(i1+i2);
        if( (i1+i2)%2 == 0 ){
           sum = sum+i1+i2;
        }
        temp = i1;
        i1 = i2;
        i2 = temp+i2;
      }

      System.out.println(sum);
  }
}

最佳答案

如果您想知道为什么在使用 int 时得到负值,这是因为代码中 for 循环末尾的 i2 变量的值已达到 的 MAX 值(2^32)-1。一旦达到最大值,它就会变为负数。由于 long 的最大值为 (2^64)-1,因此它不会在循环中溢出。

关于java - 这是求斐波那契数列中偶数之和的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42351006/

相关文章:

java - 每 15 分钟创建一次 Android 通知

java - 从类路径上的 log4j 配置文件引用 log4j 配置文件

java - 如何将 Field(Reflection) 的值设置为 POJO?

java - 如何为未知长度的任务创建准确的进度条?

java - 如何在 Android 中将文本绘制到图像上

java - 搜索矩形的排序列表

java - 如何在启用 WTP 功能的情况下将 Maven 项目导入到 Eclipse Mylyn?

java - 使用 Java 保存 WizardPage 设置

java - 在 JSTL 中访问 Map<Enum, Object>

java - Maven settings.xml 未使用