栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

斐波那契数列中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原语都无法表示。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号