以长整数保存阶乘

时间:2014-07-31 20:25:49

标签: c# stack-overflow long-integer factorial

我使用以下代码来获得Factorial,但它似乎对我有限。

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

但似乎只允许6566上的值,它提供0作为结果,如果值为65或接近,则结果也为负值。我可以做些什么来允许更多的值使用,并获得System.StackOverflowException的结果?

2 个答案:

答案 0 :(得分:3)

您可能想要查看BigInteger结构,因为它允许任意大小的整数:http://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx

答案 1 :(得分:0)

Uint64会让你更多,不知道有多少。