方法一:recursion tree
def permute_array(a, swapping=0):
if swapping == len(a)-1:
print(swapping)
print("".join(a))
return
for i in range(swapping, len(a)):
a[swapping], a[i] = a[i], a[swapping]
print('yi', i, swapping)
permute_array(a, swapping+1)
print('er', i, swapping)
a[i], a[swapping] = a[swapping], a[i]
print('san', i, swapping)
permute_string('abc')
方法二:简单的recursion
def permutation(list):
if len(list)==0:
return []
if len(list) == 1:
return [list]
l=[]
for i in range(len(list)):
m=list[i]
rlist=list[:i]+list[i+1:]
for p in permutation(rlist):#crucial step
l.append([m]+p)
return l
data = list('123')
p=permutation(data)
print(p)