这两个摘要之间的区别是:
for (int i = 1; i <= x; i++) {与
for (int i = 1; i <= 100; i++) {在第一种情况下,x每次都会变得更大!最终,它将在x 溢出时停止并变为0,这比第二种情况要早得多。有关为什么导致0而不是其他随机数的解释,请参见:为什么此乘法整数溢出导致为零?
在第二种情况下,当
i = 34,
fact(n)将返回0,所以双师是
(0 * 1.0) /0其导致NaN。加到时NaN,任何
double都会变成NaN,这就是第二个片段产生的原因NaN。请参阅:在Java中,NaN是什么意思?



