Escreva um algoritmo combinatório mais rápido

Estou tentando escrever um algoritmo combinatório para obter todas as combinações possíveis dek fora den sem repetições.

A fórmula é:

n!/(k!(n-k)!)); 

Os resultados acabam em uma matriz. O que eu realmente escrevi é este:

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);
}

Esta é a maneira mais rápida de conseguir isso? Existe uma maneira de acelerar isso? Talvez para escrever recursivamente?

questionAnswers(5)

yourAnswerToTheQuestion