我写了两个函数来计算一个组合。 第一个仅用于两倍,但速度更快。 (+不太精确的结果。) 第二个接近组合的含义。
有没有更好的方法?还是只是视情况而定?
//only for double
double Combination_(double n, double r) {
if (r == 0)
return 1;
else if (n != 0 && r != 0)
return (n / r) * Combination_(n - 1, r - 1);
}
int Combination(int n, int k)
{
if (k == 1)
return n;
else if (n == k)
return 1;
else // recursive case: n>k and k>1
return Combination(n - 1, k - 1) + Combination(n - 1, k);
}