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