python:递归函数不返回true或false

时间:2019-06-12 21:52:00

标签: python recursion

我已经在python中实现了不平衡的二叉树,现在想为其寻找一种可以返回True和False的搜索方法。 但是,我现在已经创建了此递归函数,该函数在打印结果方面有效,但仅返回“ None”。

我猜这是因为只有最后一个递归调用才能返回某些内容,而外部的则不会。

我该如何解决?我觉得这应该是微不足道的,让我感到迷茫。

def traverseSearch(self, ID, current):

    if current == None: # if we have not found our goal, the current node is null
        print("not found")
        return False

    if current.ID == ID: # succes statement
        print("found")
        return True
    if ID > current.ID: # call recursive on left children if data is bigger
        self.traverseSearch(ID, current.rightChild)

    if ID < current.ID: # call recursive on Right children if data is bigger
        self.traverseSearch(ID, current.leftChild)

现在更改为以下内容,但似乎仍返回nonetype

def traverseSearch(self, ID, current):

    if current == None: # if we have not found our goal, the current node is null
        print("not found")
        return False

    if current.ID == ID: # succes statement
        print("found")
        return True
    if ID > current.ID: # call recursive on left children if data is bigger
        self.traverseSearch(ID, current.rightChild)

    if ID < current.ID: # call recursive on Right children if data is bigger
        self.traverseSearch(ID, current.leftChild)

1 个答案:

答案 0 :(得分:1)

您的猜测是正确的;您只需要返回递归调用的结果即可。

        return self.traverseSearch(ID, current.Child)

别担心;我们都会迷失在某些事后可见的事情上。