gpt4 book ai didi

java - 我的 Java 斐波那契数列有误吗?

转载 作者:行者123 更新时间:2023-11-29 09:48:40 24 4
gpt4 key购买 nike

public class Arrays {
public static void main(String[] args){
long Fib[] = new long[100];
Fib[0] = 1;
Fib[1] = 1;
int i = 0;
while(i <= 100){
Fib[i+2]= Fib[i] + Fib[i+1];
System.out.println(Fib[i]);
i++;
}

}
}

我用它来求斐波那契数列,但它在第 94 个学期左右开始给我奇怪的读数。有人愿意解释吗?我是 Java 的新手,所以如果它很明显,请不要讨厌。这是错误输出的一些片段,但其他一切看起来都很好:

832040

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100

1346269

...

63245986

at Arrays.main(102334155
Arrays.java:8)

165580141

...

4660046610375530309

7540113804746346429

-6246583658587674878

1293530146158671551

-4953053512429003327

-3659523366270331776

-8612576878699335103

6174643828739884737

最佳答案

这是解决方案。您正在尝试访问第 102 个元素 i + 2,其中 i = 100

 Fib[0] = 1;
Fib[1] = 1;
int i = 2;
while(i < 100){
Fib[i]= Fib[i-1] + Fib[i-2];
System.out.println(Fib[i]);
i++;
}

此外,第 97 个斐波那契数超出了 long 范围,它介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间。 97th Fibonacci 是 83,621,143,489,848,410,000 你应该使用 BigInteger 而不是 long

下面的代码打印直到 1000 位斐波那契数。

   BigInteger first = new BigInteger("0");
BigInteger second = new BigInteger("1");
BigInteger temp;// = new BigInteger("0");
int counter = 1;

while(numberOfDigits(second) < 1000)
{
temp = new BigInteger(second.toString());
second = second.add(first);
first = new BigInteger(temp.toString());
counter++;
}
System.out.print(counter);


}

public static int numberOfDigits(BigInteger number)
{
return number.toString().length();
}

关于java - 我的 Java 斐波那契数列有误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17641126/

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