发布网友 发布时间:2022-04-22 16:56
共1个回答
热心网友 时间:2023-07-22 04:46
def p(s,res=[]):
#将字符c插入到数列ar中,会有多少种排列
def h(c,ar):
return [ar[:i]+[c]+ar[i:] for i in range(len(ar)+1)]
#已有结果arr的基础上,如果增加c字符,arr会变成多少种排列
def g(c,arr,res=[]):
if arr==res==[]:
return [[c]]
elif arr==[]:
return res
else:
return g(c,arr[1:],res+h(c,arr[0]))
#主体递归
if s=='':
return res
else:
return p(s[1:],g(s[0],res))
if __name__=='__main__':
s='ABCDE'
for x in p(s):
print(''.join(x))