Php récursion pour obtenir toutes les possibilités de chaînes
Voici mon code pour obtenir toutes les possibilités:
$seq[1] = 'd';
$seq[2] = 'f';
$seq[3] = 'w';
$seq[4] = 's';
for($i = 1; $i < 5; $i++)
{
$s['length_1'][] = $seq[$i];
$c1++;
for($i2 = $i+1; $i2 < 5; $i2++)
{
$s['length_2'][] = $seq[$i].$seq[$i2];
$last = $seq[$i].$seq[$i2];
$c2++;
for($i3 = $i2+1; $i3 < 5; $i3++)
{
$s['length_3'][] = $last.$seq[$i3];
$last = $last.$seq[$i3];
$c3++;
for($i4 = $i3+1; $i4 < 5; $i4++)
{
$s['length_4'][] = $last.$seq[$i4];
$c4++;
}
}
}
}
for($i = 0; $i < $c1; $i++)
echo $s['length_1'][$i].'<br>';
for($i = 0; $i < $c2; $i++)
echo $s['length_2'][$i].'<br>';
for($i = 0; $i < $c3; $i++)
echo $s['length_3'][$i].'<br>';
for($i = 0; $i < $c4; $i++)
echo $s['length_4'][$i].'<br>';
Mais si je veux en ajouter d'autres, alors je vais devoir ajouter une boucle. Alors, comment puis-je le faire avec la récursivité? J'essaie, j'essaie, mais je ne peux vraiment pas le faire.
S'il vous plaît aider et de post-exemple aussi simple que possible.
Merci.
source d'informationauteur good_evening
Vous devez vous connecter pour publier un commentaire.
Ici est un simple algo. Itération de 1 à 2count(array)-1. À chaque itération, si j-ème bit dans une représentation binaire du compteur de boucle est égale à 1,: j-ième élément d'une combinaison.
Que PHP doit être en mesure de calculer 2count(array) comme un entier, cela ne peut jamais excéder
PHP_INT_MAX
. Sur un 64 bits installation de PHP de votre tableau ne peut pas avoir plus de 62 éléments, comme 262 reste au-dessous dePHP_INT_MAX
tandis que 263 la dépasse.EDIT: Ce calcule toutes les combinaisons possibles, pas de permutations (c'est à dire, 'abc' = 'abc'). Elle le fait par le représentant du tableau original en binaire et "comptage" de 0 à la représentation binaire de la gamme complète, effectivement la construction d'une liste de tous les possibles combinaison unique.
Un algorithme est ici,
Je sais qu'il n'est pas efficace en aucune façon, mais en utilisant dans de petits ensembles ne devrait pas être un problème
la première base de paramètre est un tableau contenant des éléments à prendre en considération lors de la génération de combinaisons.
simple d'utilisation et de sortie:
et de sortie est
À la liste de tous les sous-ensembles d'un tableau, à l'aide de cette combinaison de l'algorithme de simplement exécuter
Et de sortie est
Ici, il est:
De sortie:
Aussi, lire ce;
Vous pouvez faire ceci:
Voici un exemple:
Cela donne le tableau suivant:
Une brève explication:
C'est un standard de permutation question, regardez dans "php permutations" si vous avez besoin de toutes les variations de la chaîne.
Voici ma fonction pour imprimer toutes les combinaisons de caractères possibles: