我在
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))
这修复了错误,但我不确定原因.有人可以解释一下吗?