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
就是这样做的,它返回您努力获得的结果。