StackOverflowError factoriel informatique d'un BigInteger?

Je suis en train d'écrire un programme Java pour calculer la factorielle d'un grand nombre. Il semble BigInteger n'est pas en mesure de tenir de tels un grand nombre.

Le ci-dessous le (simple) code que j'ai écrit.

 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))));
  }

Le nombre maximal le programme ci-dessus les poignées en 5022, après que le programme génère un StackOverflowError. Existe-il d'autres façons de le gérer?

source d'informationauteur Vinoth Kumar C M