我正在研究 Project Euler #25。我打算将所有斐波那契数保存在 BigInteger 数组中。但是,会抛出 NullPointerException,我不知道为什么以及如何避免它。我知道有更简单的算法来解决这个问题。但我只想知道我的错误在哪里,非常感谢!这是问题状态:斐波那契数列由递归关系定义:
Fn = Fn-1 + Fn-2,其中 F1 = 1 和 F2 = 1。因此前 12 项将是:
F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144 第12项F12是第一个包含三位数字的项.
斐波那契数列中包含 1000 位数字的第一项是什么?
我的代码如下:
private static BigInteger[] fibonacci;
public static void main(String[] args) {
for(int i = 0; fibonacci[fibonacci.length-1].toString().length() < 1000; i++){
if(i == 0)
fibonacci[i] = BigInteger.ZERO;
if(i < 3)
fibonacci[i] = BigInteger.valueOf(1);
else
fibonacci[i] = fibonacci[i - 1].add(fibonacci[i - 2]);
}
System.out.println(fibonacci.length);
}