The following code generates all the permutations for a string:
def permutations(word):
if len(word)<=1:
return [word]
#get all permutations of length N-1
perms=permutations(word[1:])
char=word[0]
result=[]
#iterate over all permutations of length N-1
for perm in perms:
#insert the character into every possible location
for i in range(len(perm)+1):
result.append(perm[:i] + char + perm[i:])
return result
Can you explain how it works? I don't understand the recursion.
The algorithm is:
The base case for the recursion is a single letter. There is only one way to permute a single letter.
Worked example
Imagine the start word is
bar
.b
.ar
. This givesar
andra
.b
in every location:ar
->bar
,abr
,arb
ra
->bra
,rba
,rab
I've written the steps out for a string of length 2 and a string of length 3 below.
permutations('ab')
permutations('abc')