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