我尝试使用nCm函数查找所有组合,但对于大数字,它会失败
int fact(int num)
{
if (num == 1 || num == 0)
return 1;
return num * fact(num-1);
}
int nCm(int num, int base)
{
int result;
return result = fact(num) / (fact(num - base)*fact(base));
}
其中base = 3
和num可以是任何内容,因此对于大数量,它会失败。我不能使用bigInteger库,所以请帮助
答案 0 :(得分:1)
如果您暂时考虑该分部,您会发现(n-b)!
项对于分子和分母都是通用的(即它们会被取消)。
您只需要将n!
视为:
n * (n-1) * (n-2) * ... * (n-b+1) * (n-b)!
现在你可以计算出没有任何除法或大的中间值(可能会溢出)的结果,你也可以在没有递归的情况下进行计算。