我是在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