Python中嵌套函数的二分查找递归方式
Recursive way of Binary Search with nested function in 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)
这个函数工作正常。但是,如果我从 if 语句中删除 return
,并在没有 return
的情况下调用搜索函数,则会出现错误的答案。谁能解释一下?具体区别是什么?
如果您不return递归函数中的值,则此函数的tail只是returning None,其计算结果为False如果您尝试将其转换为布尔值
我实现了二进制搜索的递归方式,但遇到了问题。 这是我的代码:
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
的情况下调用搜索函数,则会出现错误的答案。谁能解释一下?具体区别是什么?
如果您不return递归函数中的值,则此函数的tail只是returning None,其计算结果为False如果您尝试将其转换为布尔值