任何人都可以告诉我为什么这段代码会返回RuntimeError: maximum recursion depth exceeded:
def maximum(tab, indDeb, indFin):
if (indDeb == indFin):
return indDeb
else:
m = (indDeb + indFin) / 2
print "m = ", m
k1 = maximum(tab, indDeb, indFin)
k2 = maximum(tab, m+1, indFin)
if (tab[k1] > tab[k2]):
return k1
else:
return k2
if __name__ == "__main__":
maximum([1, 2, 3, 4, 5], 0, 4)
Run Code Online (Sandbox Code Playgroud)
在maximum你内部递归调用函数而不改变参数:
def maximum(tab, indDeb, indFin):
# ...
k1 = maximum(tab, indDeb, indFin)
Run Code Online (Sandbox Code Playgroud)
这不能不导致无限递归.
也许您想要限制上层索引:
k1 = maximum(tab, indDeb, m)
Run Code Online (Sandbox Code Playgroud)
这条线:
k1 = maximum(tab, indDeb, indFin)
Run Code Online (Sandbox Code Playgroud)
应该:
k1 = maximum(tab, indDeb, m)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |