我有一个程序,它执行递归调用20亿次,堆栈溢出.我做了更改,然后它仍然需要40K递归调用.所以我需要几个MB堆栈内存.我听说堆栈大小默认为1MB.我尝试在线搜索.有人说在视觉工作室里去了属性 - >链接器.........但我找不到它.
有谁知道如何增加它?另外我想知道我是否可以在我的C#程序中设置它?
PS我使用的是32位winXP和64位win7.
抱歉,如果这是错误的站点,但让我们想象一个函数 (C#):
public int Increment(int i)
{
int j = i;
if (j++ < Math.Pow(10, 12)) j = Increment(j);
return j;
}
Run Code Online (Sandbox Code Playgroud)
这个函数没什么用,只是一个例子。我可以想象,自递归“循环”的最终递归返回值将通过每个递归函数将结果传递回,将每个方法返回到前一个递归,然后最终返回到初始函数调用,返回到调用者功能。
我的问题是我们可以有多少次递归,是什么导致了这个限制?谢谢。