二项式系数计算算法

我需要一种计算组合而不耗尽内存的方法。这是我到目前为止所拥有的。

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

回到顶部