该递归程序每次都给出不同的输出

时间:2020-08-01 18:11:42

标签: recursion permutation

我想到了一种算法,用于生成迈克尔·古德里奇(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))

足够有趣的是,该程序使用相同的输入为我提供了不同的输出,任何人都可以解释我为什么会这样,如何更改才能使该算法起作用?

0 个答案:

没有答案