Напишите более быстрый алгоритм комбинаторики

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

Это самый быстрый способ сделать это? Есть ли способ ускорить это? Может быть, написать это рекурсивно?

Ответы на вопрос(5)

Ваш ответ на вопрос