Python中带有嵌套函数的二进制搜索的递归方式

问题描述 投票:-1回答:1

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

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的情况下调用搜索功能,则会产生错误的答案。谁能解释一下?确切的区别是什么?

python recursion nested binary-search
1个回答
1
投票

如果您未在递归函数中返回值,则此函数的tail仅返回None,如果尝试将其转换为布尔值,则该值为[False]

© www.soinside.com 2019 - 2024. All rights reserved.