0

我有函数a调用函数b(返回TrueFalsea),之后函数a可以返回要打印的结果。

class C:
    ...

    def a(self, data):

        p = self.head
        return self.b( p,data)

    def b(self, p, data):

        current = p
        if current.data == data:
            return True
        else:
            return False


if __name__=="__main__":  

    x = C()
    print(x.a(1))

有时它返回 None 即使它是True. 我不确定发生了什么?

4

1 回答 1

8

没有看到您的实际代码就不可能说。可能的原因是通过您的函数的代码路径不执行return语句。当代码沿着该路径运行时,函数以没有返回值结束,因此返回None

更新:听起来您的代码如下所示:

def b(self, p, data): 
    current = p 
    if current.data == data: 
        return True 
    elif current.data == 1:
        return False 
    else: 
        self.b(current.next, data)

else 子句是你的None路径。您需要返回递归调用返回的值:

    else:
        return self.b(current.next, data)

顺便说一句:对这样的迭代程序使用递归在 Python 中不是一个好主意。改用迭代。此外,您没有明确的终止条件。

于 2013-03-24T22:00:18.420 回答