Python返回没有从for循环中转义

2024-09-27 09:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我解决此问题的代码:

def nfsmaccepts(current, edges, accepting, visited):
    print ('iteration', current, ''.join([i[1] for i in visited]))
    if current in accepting:
        print ('accepted')
        return ''.join([i[1] for i in visited])
    else:
        for edge in edges:
            if edge not in visited and current == edge[0]:
                print (edge, ' matched')
                visited.append(edge)
                for i in edges[edge]:
                    if nfsmaccepts(i, edges, accepting, visited) is not None:
                        print (edge, i, ' chosen')
                        return nfsmaccepts(i, edges, accepting, visited)
                    else:
                        visited = visited[:-1]

结果如下:

^{pr2}$

我不明白为什么当递归函数的一个终端调用已经到达时,程序为什么继续运行for循环而返回None。请帮忙!在


Tags: innoneforreturnifnotcurrentelse
1条回答
网友
1楼 · 发布于 2024-09-27 09:23:57

if语句调用函数时,将出现“accepted”状态:

if nfsmaccepts(i, edges, accepting, visited) is not None

然后继续打印(4, 'c') 5 chosen。上一次迭代也是这样,所以您从迭代4再次调用它,并打印(3, 'b') 4 chosen。在

也许在测试之前只调用一次结果存储?在

^{pr2}$

相关问题 更多 >

    热门问题