二项式系数计算算法
我需要一种计算组合而不耗尽内存的方法。这是我到目前为止所拥有的。
public static long combination(long n, long k) // nCk{
return (divideFactorials(factorial(n), ((factorial(k) * factorial((n - k))))));
}
public static long factorial(long n)
{
long result;
if (n <= 1) return 1;
result = factorial(n - 1) * n;
return result;
}
public static long divideFactorials(long numerator, long denominator)
{
return factorial(Math.Abs((numerator - denominator)));
}
我已将其标记为C#,但理想情况下,解决方案应独立于语言。
回答:
public static long combination(long n, long k) {
double sum=0;
for(long i=0;i<k;i++)
{
sum+=Math.log10(n-i);
sum-=Math.log10(i+1);
}
return (long)Math.pow(10, sum);
}
以上是 二项式系数计算算法 的全部内容, 来源链接: utcz.com/qa/397464.html