2016-09-16 Permutations et récursivité#
Enumérer les permutations est un exercice classique. Voici une implémentation un peu différente mais toujours récursive :
def permutation(L):
n=len(L)
if n==1:
return [L]
else :
P=[]
for i in range(n):
A=L[0:i]+L[i+1:n]
P1=permutation(A)
for k in range(len(P1)):
P.append([L[i]]+P1[k])
return P
La version que j’ai implémentée utilise les itérateurs
enumerate_permutations_recursive
.
Il existe toujours une version non récursive d’une fonction qui l’est :
enumerate_permutations
.
Celle-ci reproduit le fonctionnement de la première.
C’est un exemple où le passage de l’un à l’autre n’est pas simple.