我正在尝试编写一个 Java 程序来计算大量的阶乘。似乎BigInteger
无法容纳这么大的数量。
下面是我写的(直截了当的)代码。
public static BigInteger getFactorial(BigInteger num) {
if (num.intValue() == 0) return BigInteger.valueOf(1);
if (num.intValue() == 1) return BigInteger.valueOf(1);
return num.multiply(getFactorial(num.subtract(BigInteger.valueOf(1))));
}
上述程序处理的最大数量为 5022,之后程序抛出一个StackOverflowError
. 还有其他方法可以处理吗?