Bonjour,

Je n'arrive pas à présenter le résultat sous la bonne forme. En donnant le string 'abc', j'ai le résultat suivant : ["a['bc', 'cb']", "b['ac', 'ca']", "c['ab', 'ba']"].

Je ne vois pas du tout comment distribuer le a dans bc et cb pour avoir abc et acb. Quand on "remonte" la recursion, on a bien bc et cb mais la "remontée" suivante avec a se passe mal.

Pour la récursion j'utilise :
Arret Rec : len(my_string)==1
Rec : per(a,b,c) = a + per(b,c) , b + per(a,c) , c + per(a,b)
per(b,c) donne b+per(c) et c+per(b).
per(c) donne c donc bc donc abc.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
def permut(my_string):
    result=[]
    if len(my_string)==1:
        return my_string
    else:
        for i,elt in enumerate(my_string):
            result.append(elt+str(permut(my_string[:i]+my_string[i+1:])))            
    return result       
 
print(permut('abc'))
Merci