我在
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,mid) else: return bs_h(items,mid,upper) def bs(items,key): return bs_h(items,len(items)-1)
然后我改变了我的参数和基本情况,如下所示:
def bs_h(items,upper): if lower + 1 == upper: return None mid = (lower + upper) // 2 if key < items[mid]: return bs_h(items,-1,len(items))
这修复了错误,但我不确定原因.有人可以解释一下吗?