对不起,如果这是一个错误的网站,但让我们设想一个函数(C#):
public int Increment(int i)
{
int j = i;
if (j++ < Math.Pow(10, 12)) j = Increment(j);
return j;
}
这个功能很无用,但它只是一个例子。我想,自递归“循环”的最终递归返回值会将结果传递回每个递归函数,将每个方法返回到前一个递归,最后返回初始函数调用,返回给调用者功能。
我的问题是我们可以进行多少次递归,以及导致这种限制的原因是什么?感谢。
答案 0 :(得分:2)
Close to 100,000.但是,如果您有可能达到该限制,则应重新设计代码以删除递归。
此外,我还记得int.MaxValue
约为2.1 * 10 ^ 9(21亿),小于10 ^ 12,所以(即使忽略递归限制)你的函数永远不会返回。当您尝试从j == int.MaxValue
增加时,您将要么抛出异常(如果您处于checked环境中),要么循环回j == int.MinValue
(如果未选中)