嗨,我有一个DFS算法的python代码。当我到达“ GoalNode”时,我需要返回。但是我的函数不会返回,直到到达所有节点才起作用。我猜问题是我不知道递归函数如何工作。我的函数必须在加粗的代码行中停止。我该如何解决这个问题
def DFS(visited, StartNode, GoalNode):
index =(list(MainDictionary).index(StartNode))
visited[index] = True
print(StartNode)
**# it has to return here out put must be only F - C but function reaches all the nodes
if StartNode == GoalNode:
return**
#This line is for accessing my dictionary data type
values = ReturnKeyVal(StartNode)
for key in values:
index =(list(values).index(key))
if visited[index] == False and values[key] != 0:
DFS(visited, key, GoalNode)
def ReturnKeyVal(Target):
for keys, values in MainDictionary.items():
if keys == Target:
return values
visited = [False] * (len(MainDictionary))
DFS(visited,"F", "C")
尽管我对您的代码还有其他疑问(因为我无法弄清楚ReturnKeyVal应该做什么,如果MainDictionary是普通的python字典,它只会返回与键对应的值,但是如果您只是想这样做为什么要为此编写一个函数?获得对应的值就是键的用途。这就是为什么我要MainDictionary。)问题非常简单:您无需检查函数调用是否已找到目标,因此循环将继续,无论是否已找到。返回仅结束当前函数调用,而不是整个递归。如果找到,则返回true,然后检查返回值并保持返回true。