我正試圖在圖中查找遊覽。我寫了下面的代碼,這似乎是正確的打印行程。我希望它一旦找到第一個巡演並將巡迴作爲列表返回,就會停下來。然而,遞歸堆棧似乎完成了,我沒有得到想要的結果。當我找到第一個遊覽時,如何滿足我的條件,我該如何返回一個值並完全停止遞歸?謝謝。在遞歸條件滿足時返回值
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=[])
那麼,如果不是'繼續滾動循環而不是'返回'get_tour(start,g,p)'返回''而返回' – lanzz
我不明白爲什麼部分完全,但你的建議工程。如果我說a = get_tour(start,g,p) if(a):return a。謝謝!我會努力理解。 – akrishnamo
完全不瞭解這個問題,但是我認爲如果你找到一個旅程,你想在循環中「休息」。另外我認爲你需要以某種方式返回上一個'else'塊的結果。 –