我想要計算可能的組合數,所以我在這裏使用了一些數學(準確的階乘因子)。例如,如果我有50個號碼,並且我想將它們組織爲5個組,則可以製作多少個組(組合)。我使用的是這個公式:allNumbers!/(allNumbers - PerGroup)!
,但是對於這個特定的例子它出現了一個錯誤。它說,除以零是被禁止的。我怎樣才能管理這個工作? 這是我的代碼:計算可能的組合數 - C#
int b = 1;
int n = 1;
if (allNumbers - PerGroup == 0)
{
return 1;
}
else if (allNumbers - PerGroup == 1)
{
return allNumbers;
}
else
{
for (int i = 1; i <= allNumbers; i++)
{
b *= i;
}
for (int i = 1; i <= allNumbers - PerGroup; i++)
{
n *= i;
}
if (Enumerable.Range(1,int.MaxValue).Contains(b/n)) //line with ERROR!
{
return b/n;
}
else
{
return int.MaxValue;
}
}
這是不正確的。當'allNumbers - PerGroup'是'1'時,你應該計算'allNumbers!/1'不是'allNumbers'。 –
不。數學定理說這是正確的。嘗試使用這3個數字中的2個數字來組合所有組合:1,2,3。組合的最大數量是3. – PeMaCN