进程完成,退出代码 -1073741571 (0xC00000FD) 在 Python 中



我正处于学习Python的早期阶段。我尝试为较小的值计算阿克曼函数。在值为 (3,7( 之前,它工作得很好。任何高于此值(例如 3,8(都会引发此错误。 [进程已完成,退出代码 -1073741571 (0xC00000FD(]

起初,我检查是否达到了递归限制,但该过程停止了远低于设置的递归限制(在这种情况下,它设置为最大值(

import sys
sys.setrecursionlimit(999999999)
count = 0
def cf():
global count
count+=1
cf()
def Ack(m,n):
if  m==0:
x=n+1
cf()
return x
elif m>0 and n==0:
x=Ack(m-1,1)
cf()
return x
elif m>0 and n>0:
x=Ack(m-1,Ack(m,n-1))
cf()
return x
a,b=map(int,input("Enter values").split())
print(a,b)
result=Ack(a,b)
print(result)
print(count)

就这么简单,你得到一个堆栈溢出。

递归限制仅指示递归调用可以深入的程度,但不会更改堆栈大小。每个递归调用都会向堆栈添加帧,最终达到限制。

如果你真的想深入递归,你必须用threading.stack_size()改变堆栈大小并创建一个新线程。

相关问题: 进程已完成,退出代码为 -1073741571

最新更新