我是在Python递归执行二进制搜索(我知道这是不好的),并得到了与下面的代码最大递归错误:有人可以解释为什么这解决了我的递归错误?
def bs_h(items,key,lower,upper):
if lower == upper:
return None
mid = (lower + upper) // 2
if key < items[mid]:
return bs_h(items,key, lower, mid)
else:
return bs_h(items,key,mid,upper)
def bs(items,key):
return bs_h(items,key, 0, len(items)-1)
然后我改变了我的参数和基本情况,像这样:
def bs_h(items,key,lower,upper):
if lower + 1 == upper:
return None
mid = (lower + upper) // 2
if key < items[mid]:
return bs_h(items,key, lower, mid)
else:
return bs_h(items,key,mid,upper)
def bs(items,key):
return bs_h(items,key, -1, len(items))
这解决了错误,但我不知道为什么。有人可以解释吗?
什么,立刻关注我这个代码是不能比'无返回的任何其他'。 – yinnonsanders