我正处于学习Python的初期。我尝试为较小的值计算Ackerman函数。直到值(3,7)为止,它都可以正常工作。高于该值(例如3,8)的任何值都将引发此错误。 [处理完成,退出代码为-1073741571(0xC00000FD)]
首先,我检查了是否达到了递归限制,但是该过程在远低于设置的递归限制(在这种情况下,它设置为最大)下停止了。
var valueGot = this.stringToInt.TryGetValue(value, out var associate);
if (valueGot)
{
return associate;
}
else
{
// return something else
}
答案 0 :(得分:0)
就这么简单,您会出现堆栈溢出。
递归限制仅指示递归调用可以进行的深度,但不会更改堆栈大小。每个递归调用都会将帧添加到堆栈中,最终您将达到极限。
如果您真的想深入了解递归,则必须使用threading.stack_size()
更改堆栈大小并创建一个新线程。