我有一个函数可以计算阶乘和组合如下。对于一个非常大的数字计算
int faktorial(int n)
{
if((n == 0)||(n == 1))
{
return (1);
}
else
{
return (n * faktorial(n-1));
}
}
int Kombinasi(int x, int y)
{
int n = faktorial(x);
int k = (faktorial(x - y)) * (faktorial(y));
int hasil = n/k;
return (hasil);
}
但是在计算阶乘时存在一个问题。 假设我想计算x = 1000和y = 4的组合函数。现有函数的调用阶乘函数。但阶乘函数不能计算它们。如何解决这个问题呢 ?。抱歉,我的英语很不好。谢谢。
外表到[BigInteger的](https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(V = vs.110)的.aspx)类 – Jonesopolis
阶乘为1000是一个很大的数字,您需要添加数字命名空间并使用bigInteger类,使用算法计算1000的阶乘可能需要很长时间,也许使用记忆或其他方法可以提高计算效率 – Overmachine
如果您有兴趣非递归阶乘计算机,你可以在这里查看我的库的[this part](https://github.com/spearson/xofz.Core/blob/master/xofz.Core/Framework/Computation/FactorialComputer.cs)。 –