Return语句在Python的递归函数中无法正常工作

问题描述 投票:-1回答:1

嗨,我有一个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")
python-3.x recursion graph-algorithm
1个回答
0
投票

尽管我对您的代码还有其他疑问(因为我无法弄清楚ReturnKeyVal应该做什么,如果MainDictionary是普通的python字典,它只会返回与键对应的值,但是如果您只是想这样做为什么要为此编写一个函数?获得对应的值就是键的用途。这就是为什么我要MainDictionary。)问题非常简单:您无需检查函数调用是否已找到目标,因此循环将继续,无论是否已找到。返回仅结束当前函数调用,而不是整个递归。如果找到,则返回true,然后检查返回值并保持返回true。

© www.soinside.com 2019 - 2024. All rights reserved.