你的位置:哪學網 > 科技 > java運行結果我搞不懂

java運行結果我搞不懂

時間:2022-05-15 12:23瀏覽次數:60

1 楼: ヤマザキ266e77


就是因爲結果超過int的最大值了,所以得到的這個結果。
如果超過最大值,則會重新從最小值繼續向上加來計算。
你可以試試2147483647 + 1 的結果,就明白這個意思了。

所以你這裏計算最好使用double類型

2 楼: 日上之禾


import java.math.BigDecimal;

public class Four1 {
public static void main(String args[]){
System.out.println(sum(new BigDecimal(30)));
}
public static BigDecimal sum(BigDecimal n){
BigDecimal bd = new BigDecimal(1);
if(n.equals(bd)){
return bd;
}
else
return mum(n).add(sum(n.subtract(bd)));
}
//
public static BigDecimal mum (BigDecimal n){
BigDecimal bd = new BigDecimal(1);
if(n.equals(bd)){
return bd;
}
return n.multiply(mum(n.subtract(bd)));
}

3 楼: 如夢★初醒℃


你這個算的是30!+29!+28!+……+2!+1吧?
很明顯結果超出了int的範圍啊。

4 楼: 堯__不可及


這個計算出來的值是很大的,用long都不夠,你可以吧mum()和sum()的返回值設爲double
30!+29!+...+2!+1!你可以用google去算一下大概是 2.744E32

5 楼: 百度網友2a06c5a


數字太大了,按照二進制轉換了。

6 楼: zeus_flo


遞歸沒結束前肯定溢出了

友情链接: 91賽普網城固網123新聞網汽車吧網good網好價網瑞納網巴比特網科斯網

哪學網娛樂生活科技教育

Copyright © 2013-2022 哪學網 版權所有