我想到了一种算法,用于生成迈克尔·古德里奇(Michael Goodrich)在书中设置的集合的排列。
def puzzle(k,S,U):
for e in U:
S.append(e)
U.remove(e)
if k == 1:
print(S)
else:
puzzle(k-1,S,U)
U.add(e)
S.pop()
k = 3
S = []
U = {'a','b','c'}
print(puzzle(k,S,U))
足够有趣的是,该程序使用相同的输入为我提供了不同的输出,任何人都可以解释我为什么会这样,如何更改才能使该算法起作用?