Les deux révisions précédentes
Révision précédente
|
|
permutations [2010/01/09 11:10] tyrtamos |
permutations [2010/01/09 11:27] (Version actuelle) tyrtamos |
====== Permutations ====== | ====== Permutations ====== |
| |
**//En construction//** | |
| |
===== Objectif ===== | ===== Objectif ===== |
| |
\\ | \\ |
Bon. Dans vos essais, soyez raisonnables: n'oubliez pas que le nombre de permutation augmente très rapidement avec la longueur de la liste seq (factorielle de len(seq)). Ainsi, une liste toute simple comme seq = [1,2,3,4,5,6,7,8,9] donnera (en moins d'une seconde avec le code non-récursif) la liste des 362880 façons de présenter la liste seq... | Bon. Dans vos essais, soyez raisonnables: n'oubliez pas que le nombre de permutation augmente très rapidement avec la longueur de la liste seq (factorielle de len(seq)). Ainsi, une liste toute simple comme seq = [1,2,3,4,5,6,7,8,9] donnera (en moins d'une seconde avec le code non-récursif) la liste des 362880 façons de présenter la liste seq. Cette liste sera tellement longue qu'elle risque même de ne pas pouvoir s'afficher sur votre PC... |
| |
==== Code non récursif ==== | ==== Code non récursif ==== |
On ne donne jamais le 3ème argument k qui n'est utilisé que comme variable interne. | On ne donne jamais le 3ème argument k qui n'est utilisé que comme variable interne. |
| |
Au lancement de la fonction, permutliste([1,2,3,4]), le 1er passage (sans la récursion), donnera avec k=0 les 4 rotations: [1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]. Pour chacune de ces valeurs, un appel récursif avec l'indice de rotation k+1 permettra de retourner toutes les séquences de rotation suivantes. Etc... jusqu'à ce que k=len(seq)-1 auquel cas il n'y a plus de rotation à faire. | Au lancement de la fonction permutliste([1,2,3,4]), le 1er passage (sans la récursion), donnera avec k=0 les 4 rotations: [1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]. Pour chacune de ces valeurs, un appel récursif avec l'indice de rotation k+1 permettra de retourner toutes les séquences de rotation suivantes. Etc... jusqu'à ce que k=len(seq)-1 auquel cas il n'y a plus de rotation à faire. |
| |
Ce code donne bien entendu les mêmes résultats que le code non-récursif. | Ce code donne bien entendu les mêmes résultats que le code non-récursif. |