【发布时间】:2012-09-17 22:03:00
【问题描述】:
我写了一个计算斐波那契数的程序。最初,由于资源问题,我无法输入大量数字,但现在在我重新编写后,它运行速度很快。但是,如果我使用 ints,一旦我输入大数字,数字就会变成负数。我尝试使用 long,但它们也很快环绕。 如果你不明白我的意思,那么这段代码应该解释一下:
`System.out.println("The 536th fibonacci number: "fib(536));`
`*The 536th fibonacci number: -8757250051716203595*`
显然,在这种情况下,负数是没有意义的,所以我想知道如何才能使它始终工作 - 无论如何都不要回绕。
编辑:问题解决了!
import java.math.BigInteger;
public static BigInteger fib(int n)
{
return fib2h(n,BigInteger.ONE,BigInteger.ONE);
}
public static BigInteger fibh(int n,BigInteger o,BigInteger p)
{
if(n==1) return o;
return fib2h(n-1,p,o.add(p));
}
【问题讨论】: