Python中嵌套函数的二分查找递归方式

Recursive way of Binary Search with nested function in Python

我实现了二进制搜索的递归方式,但遇到了问题。 这是我的代码:

def foo(x, ls):
    left, right = 0, len(ls)-1
    def search(l, r):
        if l>r:
            return False
        mid = (l+r)//2
        if x < ls[mid]:
            return search(l,mid-1)
        elif x > ls[mid]:
            return search(mid+1,r)
        else:
            return True

    return search(left,right)

这个函数工作正常。但是,如果我从 if 语句中删除 return,并在没有 return 的情况下调用搜索函数,则会出现错误的答案。谁能解释一下?具体区别是什么?

如果您不return递归函数中的值,则此函数的tail只是returning None,其计算结果为False如果您尝试将其转换为布尔值