进行全排列,但是不用交换法。思路:依次从数列中提出数并附在承载列表最后
#2022.8.11 Tianking Wang
global perm # 容纳排列实体的列表,列表元素为列表
global perm1 # 单个排列实体组成的列表,列表元素为数
perm = []
perm1 = []
def perm2_build(n):
perm2 = []
for i in range(n):
perm2.append(i+1)
return perm2
def permutation(list1): # 依据list1的递归
print(f"list1={list1}")
global perm
global perm1
if list1:
for i in list1:
perm1.append(i)
print(f"perm1={perm1}")
list2 = list1
list2.remove(i)
print(f"list2={list2}")
permutation(list2)
else:
perm.append(perm1)
print(f"perm={perm}")
perm1 = []
perm2 = perm2_build(3) # !!!!开局输入目标列表长度
permutation(perm2)
print(f"perm={perm}")
list1=[1, 2, 3]
perm1=[1]
list2=[2, 3]
list1=[2, 3]
perm1=[1, 2]
list2=[3]
list1=[3]
perm1=[1, 2, 3]
list2=[]
list1=[]
perm=[[1, 2, 3]]
perm=[[1, 2, 3]]