[英]Why am I getting Traceback error in my python code
def min_op(n,base):
if(base[n]!=None):
result=base[n]
elif(n==1):
result=1
else:
if(n%2==0):
result=1+min(min_op(n//2,base),min_op(n-1,base))
base[n]=result
else:
result=1+min_op(n-1,base)
base[n]=result
return result
这是我得到运行时错误的错误:
Runtime ErrorTraceback (most recent call last):
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 17, in <module>
print(min_op(n,base))
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 8, in min_op
result=1+min(min_op(n//2,base),min_op(n-1,base))
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 8, in min_op
result=1+min(min_op(n//2,base),min_op(n-1,base))
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 8, in min_op
result=1+min(min_op(n//2,base),min_op(n-1,base))
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 11, in min_op
result=1+min_op(n-1,base)
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 8, in min_op
result=1+min(min_op(n//2,base),min_op(n-1,base))
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 11, in min_op
result=1+min_op(n-1,base)
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py", line 8, in min_op
result=1+min(min_op(n//2,base),min_op(n-1,base))
File "/home/d7106f7b35cdcbcb097332ba5e88b383.py.................
您的错误是堆栈溢出,称为 python 为:
RecursionError: maximum recursion depth exceeded in comparison
递归错误的原因是您有以下行:
result=1+min(min_op(n//2,base),min_op(n-1,base))
其中min_op(n-1,base)
部分意味着程序总有一种方法可以向下递归n
次,在Minimum Operations
编码问题约束的情况下, N
的值可能高达 10^ 4 超过了 python 堆栈深度。
这意味着您解决此问题的方式不适合递归解决方案,除了这部分是完全多余的,您的代码可以通过简单地替换以下行来修复:
result = 1 + min_op(n // 2, base)
通过此更改,您的程序应该运行得更快且没有错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.