为什么我在这个数组中得到负数?

时间:2013-01-02 18:58:28

标签: java arrays

我刚刚开始学习数组,所以如果可以,请用外行的术语解释。

在阵列的第50个周期左右,负数开始出现,考虑到代码,这似乎是荒谬的。我正在使用eclipse运行它(截至12月19日的最新版本)。

public class Array1
{
    /*
    * @param args
    */
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        int[] tree = new int[1000];
        tree[0] = 1;
        tree[1] = 2;

        int j = 0;

        for (j = 1; j<999; j++)
        {
            tree[j+1] = tree[j] + tree[j-1];
        }

        for (int i=1; i<=150; i++)
        {
            System.out.println(tree[i]);
        }
    }
}

2 个答案:

答案 0 :(得分:3)

你在计算的是Fibonacci数的序列,它们已知指数增长。因此,你最终会溢出你的int,这会导致它变为负数。

答案 1 :(得分:3)

整数溢出计算斐波纳契数。

Read this article

int: int数据类型是32位带符号的二进制补码整数。它的最小值为-2,147,483,648,最大值为2,147,483,647(含)。