为何我的代码不能正确输出100的阶乘值呢?以为是超过了int的最大值范围,换成了long也不行,10以内的阶乘都可以正确输出
就是太大了:9.3326215e+157,157位数:
private static BigDecimal factorial(int num) {
if (num == 1) {
return BigDecimal.valueOf(1);
} else {
return BigDecimal.valueOf(num).multiply(factorial(num - 1));
}
}
要用BigInteger类,然后也没有重载*运算符,用multiply方法
long也太小了
你根本不明白100的阶乘到底多大
13的阶乘就已经超出int范围了,long也只比int多了一倍的存储空间,两个int相乘那么大而已