我正在实现一种算法来从 n 中找出 m 个元素的所有组合。
我已经通过答案验证了整个代码,但是因为没有注释,所以有一些难以理解的部分,所以我写了一个问题。
例如,输入为 n = 7,to_pick 为 4,smallest = 0因为len(picked) == 0在函数内部。然后,如果smallest(0)在 for 语句中插入选择列表并再次to_pick == 0通过,则返回picked pick(n, picked, to_pick-1)。([0, 1, 2, 3])
但是接下来我无法理解选择 [0,1,2,4] 的过程。当to_pick == 0,函数返回(它返回一个 if 语句而不是一个函数?)我想知道什么时候picked.pop()会被执行。
如果我有什么误解,请寻求指导。
代码
def pick(n, picked, to_pick):
if to_pick is 0:
return print(picked)
if len(picked) is 0:
smallest = 0
else:
smallest = picked[-1] + 1
for next in range(smallest, n):
picked.append(next)
pick(n, picked, to_pick - 1)
picked.pop()
if __name__ == '__main__':
result = list()
pick(7, result, 4)
慕少森
相关分类