斐波那契数列有一个负数

Fibonacci sequence has a negative number

我有斐波那契数列的代码:

public class Fibonacci {
    private List<Integer> fibonacci;

    public void fillFibonacci(){
        fibonacci = new ArrayList<>();
        int n1 = 1 , n2 = 1 , n3;
        fibonacci.add(n1);
        fibonacci.add(n2);
        for(int i = 2 ; i < 4000 ; i ++){
            n3 = n1 + n2;
            fibonacci.add(n3);
            n1=n2;
            n2=n3;
        }
    }

    public void printFibonacci(){
        for(int i = 0 ; i < fibonacci.size() ; i ++){
            System.out.print(fibonacci.get(i) + " ");
            System.out.println(i);
        }
    }
}

这段代码显示负数有什么问题吗?

你不能在这个循环中达到索引= 4000,你已经整数溢出。您最多可以转到 49。这样更改循环。

for(int i = 2 ; i < 49 ; i ++){
            n3 = n1 + n2;
            fibonacci.add(n3);
            n1=n2;
            n2=n3;
        }

第 4000 个斐波那契数列有 836 位。 java int 类型有 32 位,最多可以容纳 10 位数字。之后它会溢出并可能变为负值。如果您想要大数字,请更改您的代码以使用 BigInteger.