【问题标题】:Self recursive function limits自递归函数限制
【发布时间】:2014-06-01 16:22:50
【问题描述】:

对不起,如果这是错误的站点,但让我们想象一个函数(C#):

public int Increment(int i)
{
    int j = i;
    if (j++ < Math.Pow(10, 12)) j = Increment(j);

    return j;
}

这个函数没什么用,但它只是一个例子。我会想象自递归“循环”的最终递归返回值将通过每个递归函数将结果向下传递,将每个方法返回到前一个递归,然后最终返回到初始函数调用,返回给调用者函数。

我的问题是我们可以有多少次递归,是什么导致了这个限制?谢谢。

【问题讨论】:

标签: c# recursion


【解决方案1】:

Close to 100,000. 但是,如果您有达到该限制的危险,您应该重新设计您的代码以消除递归。

另外,我想我会注意到int.MaxValue 大约是 2.1*10^9(21 亿),小于 10^12,所以(即使不考虑递归限制)你的函数永远不会返回。当您尝试从j == int.MaxValue 递增时,您将抛出异常(如果您在checked 环境中)或循环回j == int.MinValue(如果未选中)。

【讨论】:

  • 两个优点!在问题上添加了cmets,答案很清楚,谢谢。
猜你喜欢
  • 2018-09-24
  • 2021-11-25
  • 2014-03-03
  • 2016-02-27
  • 2020-01-26
  • 2021-12-19
  • 2021-12-28
  • 2015-04-19
  • 1970-01-01
相关资源
最近更新 更多