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?