我正在尝试在图表中查找旅行。我编写了以下代码,这似乎可以正确打印游览。我希望它在找到第一个游览后停止并将该游览作为列表返回。但是,递归堆栈似乎已完成,但我没有得到所需的结果。当我找到第一个游览(即满足我的条件)时,如何返回值并完全停止递归?谢谢。
def get_tour(start, graph, path):
if path==[]:
from_node=start
else:
from_node=path[-1][1]
if graph==[]:
if start in path[-1]:
print "Tour Found"
return path
else:
edges=[node for node in graph if from_node in node]
for edge in edges:
to_node=[i for i in edge if i<> from_node][0]
p=list(path)
p.append((from_node,to_node))
g=list(graph)
g.remove(edge)
get_tour(start, g,p)
g=[(1,2), (1,3), (2,3)]
get_tour(1, graph=g, path=[])
最佳答案
使用递归时,您需要将返回值传递回整个调用堆栈。通常这不是使用递归的最佳方法。
无需详细介绍代码,这里有一个快速建议:
def get_tour(start, graph, path):
ret_val = None
# Some code..
if graph==[]:
# Some code..
else:
edges=[node for node in graph if from_node in node]
for edge in edges:
# Some more code..
ret_val = get_tour(start, g,p)
if ret_val:
break
return ret_val
关于python - 递归满足条件时返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603863/