无法从递归函数返回布尔值

时间:2018-10-19 19:34:48

标签: python recursion graph-theory

我正在研究一个家庭作业问题,在该问题中,我们必须编写一种可以确定图形是否为二部图的算法。我的python解决方案可以工作,但是如果图形不是二分的,现在它会引发异常,相反,我希望它返回布尔值。如何修改此代码?

def is_bipartite(v, visited, colors, counter):

    print(v)

    # Set this vertex to visited
    visited[v] = True
    colors[v] = counter % 2

    # Explore links
    for u in v.links:

        # If linked up node u has already been visited, check its color to see if it breaks
        # the bipartite of the graph
        if u in visited:

            if colors[v] == colors[u]:

                raise Exception("Not Bipartite")

        # If the link has not be visited then visit it
        if u not in visited:

            visited[u] = False

            is_bipartite(u, visited, colors, counter + 1)

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的代码,则在递归搜索中的任何位置得到匹配的颜色时,您都想返回53.3958px 639px false false 80.0625px 639px true true 。如果您未找到任何内容,则想返回False

这并不是很难做到的。只需将True语句更改为raise并检查递归调用的结果,然后返回return False(如果其中任何一个返回False结果)。然后只需将False放在函数的末尾即可完成:

return True