Я пытаюсь написать программу 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 году, после чего программа выдает a StackOverflowError
. Есть ли другие способы справиться с этим?