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.