找出两个点间的所有路径
有两段代码,我本来以为是一样的效果,结果不一样,请解答一下是为什么
path = []
stack = []
def path_between_nodes(start, end):
stack.append(start)
if start == end:
path.append(stack.copy())
stack.pop()
else:
for nextPoint in neighbor[start]:
if nextPoint not in:
path_between_nodes(nextPoint, end)
stack.pop()
return path
path = []
stack = []
def path_between_nodes(start, end):
stack.append(start)
if start == end:
path.append(stack.copy())
else:
for nextPoint in neighbor[start]:
if nextPoint not in stack:
path_between_nodes(nextPoint, end)
stack.pop()
return path
差别很小吧,第一个代码等价于在return path之前stack.pop(),第二个代码是在运行path_between_nodes()之后,也就是return path之后再stack.pop(),感觉差别仅仅是stack的内容可能会不一样。能具体讲讲你看到的不一样的效果?