我写了一个计算斐波纳契数的程序。最初,由于资源问题,我无法输入大数字,但现在我重新编写后,它运行速度很快。但是,如果我使用整数,一旦输入大数字,数字就会变为负数。我尝试使用 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));
}
答案 0 :(得分:6)
您可以在java.math中尝试BigInteger。
答案 1 :(得分:2)
BigInteger可以帮助您实现自己想要的目标。
答案 2 :(得分:2)
您可以尝试以下内容(迭代):
public static BigInteger fib(int n) {
BigInteger a = BigInteger.ONE;
BigInteger b = BigInteger.ONE;
BigInteger c;
for (int i = 3; i <= n; i++) {
c = a.add(b);
a = b;
b = c;
}
return b;
}
中查看详情
答案 3 :(得分:0)
您可以使用java.lang.BigInteger类