斐波那契数列中f(93)处的数字为负值,怎么办?

斐波那契数列中f(93)处的数字为负值,怎么办?,第1张

斐波那契数列中f(93)处的数字负值,怎么办?

您遇到了整数溢出:

 4660046610375530309 <-- term 91+7540113804746346429 <-- term 92====================12200160415121876738 <-- term 93: the sum of the previous two terms 9223372036854775808 <-- maximum value a long can store

为避免这种情况,请使用

BigInteger
,它可以处理任意数量的数字。
这是转换为use的实现
BigDecimal

public String fibo(int x){    BigInteger[] arr = new BigInteger[x+1];    arr[0]=BigInteger.ZERO;    arr[1]=BigInteger.ONE;    for (int i=2; i<=x; i++){        arr[i]=arr[i-2].add(arr[i-1]);    }    return arr[x].toString();u}

请注意,返回类型必须为String(或BigInteger),因为即使适度的93也会

x
产生太大的结果,以至于任何Java原语都无法表示。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5429614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存