我想寫一個組合數學算法得到的k
所有可能的組合出來的n
沒有重複。寫更快的組合數學算法
的公式爲:
n!/(k!(n-k)!));
結果在一個數組中結束。我實際上寫的是這樣的:
function Factorial($x)
{
if ($x < 1)
{
echo "Factorial() Error: Number too small!";
)
$ans = 1;
for ($xx = 2; $xx >= $x; $xx++)
{
$ans = $ans * $xx;
}
return($ans);
}
function Combination($selectcount,$availablecount)
{
$ans = Factorial($availablecount)/(
Factorial($availablecount - $selectcount) * Factorial($selectcount)
);
return ($ans);
}
這是實現這個目標的最快方法嗎?有沒有辦法加快這一點?也許遞歸地寫它?
你有一個錯誤,在你的第一個「if」塊。這就是爲什麼將代碼合理分配出來總是一個好主意。 ':)' – 2011-12-27 23:37:16
你在構建什麼陣列?如果您要對組合函數進行多次調用,那麼這些調用的知識將使您更容易幫助您優化。 – templatetypedef 2011-12-27 23:56:03