Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中带嵌套函数的二进制搜索递归方法_Python_Recursion_Nested_Binary Search - Fatal编程技术网

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

Python中带嵌套函数的二进制搜索递归方法,python,recursion,nested,binary-search,Python,Recursion,Nested,Binary Search,我实现了一种二进制搜索的递归方式,我面临一个问题。 这是我的代码: 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 >

我实现了一种二进制搜索的递归方式,我面临一个问题。 这是我的代码:

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)
def foo(x,ls):
左,右=0,透镜(ls)-1
def搜索(左、右):
如果l>r:
返回错误
mid=(l+r)//2
如果xls[mid]:
返回搜索(mid+1,r)
其他:
返回真值
返回搜索(左、右)

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

如果在递归函数中不返回值,则此函数的值仅返回None,如果尝试将其转换为布尔值,则该值将被计算为False

我不明白您的要求。你创造了一个有效的代码,你想知道为什么破坏它不起作用?不,我不想破坏它。我只是问一下使用return语句递归和不使用return语句递归之间的区别。因为如果不使用
return
,您运行的是相同的代码,但是当它完成时,正在进行的计算就消失了
return
就是这样做的,它返回您努力获得的结果。