StackOverflowОшибка при вычислении факториала 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. Есть ли другие способы справиться с этим?

14
задан templatetypedef 24 January 2012 в 21:04
поделиться