这是求斐波那契数列中偶数之和的正确方法吗?我在使用小范围时得到了正确的答案。在使用 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/