【发布时间】:2015-01-01 22:44:30
【问题描述】:
我编写了一个输出斐波那契数列的程序,该程序对小数运行正常。当我为序列的第 10 000 个数字设置循环时,程序变得非常奇怪,并开始在正数旁边输出负数。
起初我认为是因为我使用 int 类型作为数字,但后来我将其更改为 long 并且程序仍然输出相同的内容。我对 java 很陌生,所以我猜我的程序有问题,或者我错过了一个大于 long 并且不会输出负数的类型。
下面是代码。除了任何错误之外,请随意评论任何其他内容,因为我对 java 还很陌生,所以代码可能看起来有点业余:
public class Problem2{ //fibonacci sequence
public static void main (String [] args ){
long first = 1;
long second = 1;
System.out.println(first);
System.out.println(second);
for ( int i = 1; i <= 100 ; i++){
long third = first + second;
first = second;
second = third;
System.out.println(third);
}
}
}
前 90 个数字的输出正常:1 1 2 3 5 8 13 21 ... 之后最后 2 个输出是:
90 号:7540113804746346429
91 号:-6246583658587674878
如果这个问题被问了很多次,我深表歉意,我搜索了一下,没有找到太多我能理解的东西,所以我认为最好问一下。
【问题讨论】: