1

我创建了一个名为 numbers 的数组,它将存储斐波那契数列的值。1、2、3、5等。问题是当我尝试在非常高的索引值处调用数组值时,数组值变为负数。

numbers[10] = 144 

这是合理的,但

numbers[9999998] = -1448735941

有什么帮助吗?

public static void main(String[] args) {

    int[] numbers = new int[10000000];

    numbers[0] = 1;
    numbers[1] = 2;

    for(int x = 2; x<=numbers.length-1; x++)
    {
        numbers[x] = numbers[x-1] + numbers[x-2];
    }

    System.out.println(numbers[9999998]);
    System.out.println(numbers[10]);
4

2 回答 2

5

溢出。一旦该值超过 32 位 int 的最大“容量”,结果将环绕并从最小值开始(负数)。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

long 和 BigInteger 能够存储比 int 更高的值。

于 2013-08-14T04:20:14.060 回答
3

您遇到整数溢出。看看BigInteger一个解决方法。

于 2013-08-14T04:35:11.463 回答