首页 > 解决方案 > 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)

此功能工作正常。但是,如果我return从 if 语句中删除,并在没有 a 的情况下调用搜索函数return,则会引发错误的答案。谁能解释一下?确切的区别是什么?

标签: pythonrecursionnestedbinary-search

解决方案


如果您不在递归函数中返回值,则此函数的尾部仅返回 None,如果您尝试将其转换为布尔值,则会将其评估为 False


推荐阅读