【问题标题】:Process finished with exit code -1073741571 (0xC00000FD) in Python进程以 Python 中的退出代码 -1073741571 (0xC00000FD) 完成
【发布时间】:2020-10-14 10:48:18
【问题描述】:

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

【问题讨论】:

标签: python python-3.x


【解决方案1】:

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

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

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

相关问题: Process finished with exit code -1073741571

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 2023-01-17
    • 2021-08-18
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    相关资源
    最近更新 更多