gpt4 book ai didi

java - 斐波那契数列 long[] 数组在索引 92 后抛出负数

转载 作者:行者123 更新时间:2023-11-29 06:54:23 24 4
gpt4 key购买 nike

我正在测试这段代码以将斐波那契数列插入 long[] 数组:

public class Test {
public static void Fibonacci(int n){
long[] array = new long[n];
array[0]=1;
for (int i = 1; i < n; i++) {
if (i==1) {
array[i]=i;
}
else {
array[i] = array[i-2] + array[i-1];
}
}
System.out.println(array[n-3]+" "+array[n-2]); // verify sum
System.out.println(array[n-1]);
}
public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print("Insert Fibonacci sequence index: ");
int n = scan.nextInt();

Fibonacci(n);
}
}

但是,在位置 92 之后,它开始抛出错误或负数。我正在使用这个 Fibonacci Calculator验证数字,直到 92 是正确的。我在这里看到了一些关于这个问题的问题,大多数答案都说它是关于整数溢出的,你应该使用我正在使用的 long。

第93个数是否超过了长型的限制?我应该使用什么来达到 100 或更大的数字并仍然使用数组来管理它?

最佳答案

您正在溢出 long 的范围。您可以使用 BigInteger(并从循环中提取 array[1]);某事1 喜欢

public static void fibonacci(int n) {
BigInteger[] array = new BigInteger[n];
array[0] = array[1] = BigInteger.ONE;

for (int i = 2; i < n; i++) {
array[i] = array[i - 2].add(array[i - 1]);
}
System.out.println(array[n - 3] + " " + array[n - 2]); // verify sum
System.out.println(array[n - 1]);
}

1此外,请遵循 Java 命名约定。方法名以小写字母开头,Fibonacci 看起来像类名。

关于java - 斐波那契数列 long[] 数组在索引 92 后抛出负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37582009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com