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

Sur*_*mar 6 python python-3.x

我正处于学习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)
Run Code Online (Sandbox Code Playgroud)

小智 9

就这么简单,你会遇到堆栈溢出。

递归限制仅决定递归调用的深度,但不会改变堆栈大小。每次递归调用都会向堆栈添加帧,最终达到极限。

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

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