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