我实现了二进制搜索的递归方式,但遇到了问题。这是我的代码:
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
的情况下调用搜索功能,则会产生错误的答案。谁能解释一下?确切的区别是什么?
如果您未在递归函数中返回值,则此函数的tail仅返回None,如果尝试将其转换为布尔值,则该值为[False]