Напишите более быстрый алгоритм комбинаторики
Я пытаюсь написать комбинаторный алгоритм, чтобы получить все возможные комбинации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);
}
Это самый быстрый способ сделать это? Есть ли способ ускорить это? Может быть, написать это рекурсивно?