繁体   English   中英

过程以 Python 中的退出代码 -1073741571 (0xC00000FD) 结束

[英]Process finished with exit code -1073741571 (0xC00000FD) in Python

我正处于学习 Python 的早期阶段。 我尝试计算 Ackerman function 以获得较小的值。 它工作得很好,直到值为(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)

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

递归限制仅指示递归调用 go 的深度,但它不会更改堆栈大小。 每个递归调用都会将帧添加到堆栈中,最终您会达到限制。

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

相关问题: 进程以退出代码 -1073741571 结束

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM