概述
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))
这修复了错误,但我不确定原因.有人可以解释一下吗?
>它会终止吗?
>如果确实如此,它有多深?
bs_h(items,10,11)
然后导致:
mid = (lower + upper) // 2 = (10 + 11) // 2 = 10 if key < items[10]: return bs_h(items,10) else: return bs_h(items,11)
请注意最后一条语句 – 它与条目调用相同.如果程序此时结束,它将始终以递归方式执行.
总是检查你将如何逃避递归,顺便说一句,检查你的“新改进版本”.
总结
以上是编程之家为你收集整理的python – 有人可以解释为什么这会修复我的递归错误吗?全部内容,希望文章能够帮你解决python – 有人可以解释为什么这会修复我的递归错误吗?所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧