首页 > 解决方案 > 斐波那契数列有一个负数

问题描述

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

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);
        }
    }
}

此代码显示负数有什么问题?

标签: javaclassarraylistfibonacci

解决方案


在这个循环中你不能达到 index= 4000,你有integer overflowed。您可以达到的最大值是 49。这样更改循环。

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

推荐阅读