Сохранение факториала в длинном целочисленном

Я использую следующий код, чтобы получить Factorial, но он кажется ограниченным для меня.

private Int64 GetFactorial(Int64 value)
{
 if (value <= 1)
 {
 return 1;
 }
 return value * GetFactorial(value - 1);
}

Но, по-видимому, он допускает значения до 65 на 66 м значении, он дает 0 и результат тоже отрицательный, если значение равно 65 или около. Что я могу сделать, чтобы позволить больше значений работать, и получить результат с использованием System.StackOverflowException?

2 ответа

****** доставит вам больше, не уверен, сколько всего.


Возможно, вы захотите проверить структуру BigInteger, поскольку она позволяет целые числа произвольно большого размера: http://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110). ASPX

licensed under cc by-sa 3.0 with attribution.