C++ 递归能够进行多少次呢?

有个地图是1000*1000的 好像可以用递归搜索
递归最多可以归到多深呢

递归具体次数没有限制,限制的是函数栈容量(win32默认是2M,可以在程序链接或创建线程的时候指定更大的值),每次进入深一层的递归,函数的状态信息以及函数内部的局部变量都会压入栈里面。栈总大小是一定的,递归太深会导致栈溢出。函数的参数和局部变量越多,每次压入栈的数据就越多,最多递归层数也就越少。

应该尽量避免过深的递归操作,通过各种启发式搜索以及剪枝可以有效降低递归的深度。如果实在需要很深的递归层数可以考虑将递归算法转换成迭代算法(任何递归算法都可以转换成等价的迭代算法),通过在堆上申请更大的内存来记录状态从而避免递归的栈溢出问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-21
递归实际上利用的是系统的函数堆栈,默认的大小我记得是2M,因此如果递归较多可能会导致堆栈溢出而崩溃.比较好的方法应该是利用while+stack,这样比较安全.你的地图不算大~~我搞过比比你大的用递归都没问题本回答被网友采纳
第2个回答  2011-02-28
N多次,关键是stack大小有限,每次递归局部变量都重新生成一份,怕stack溢出本回答被提问者采纳
第3个回答  2011-02-28
递归次数没有限制,限制的容量,为2M。实际用的时候最好控制在3次以内比较好,太多了阅读就成问题了。
第4个回答  2011-02-28
,堆栈默认的大小是2M,可以自己设置。
不过建议递归别太深了。