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

有个地图是1000*1000的 好像可以用递归搜索递归最多可以归到多深呢
2026年09月28日 22:02
有5个网友回答
网友(1):

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

应该尽量避免过深的递归操作,通过各种启发式搜索以及剪枝可以有效降低递归的深度。如果实在需要很深的递归层数可以考虑将递归算法转换成迭代算法(任何递归算法都可以转换成等价的迭代算法),通过在堆上申请更大的内存来记录状态从而避免递归的栈溢出问题。

网友(2):

递归实际上利用的是系统的函数堆栈,默认的大小我记得是2M,因此如果递归较多可能会导致堆栈溢出而崩溃.比较好的方法应该是利用while+stack,这样比较安全.你的地图不算大~~我搞过比比你大的用递归都没问题

网友(3):

N多次,关键是stack大小有限,每次递归局部变量都重新生成一份,怕stack溢出

网友(4):

递归次数没有限制,限制的容量,为2M。实际用的时候最好控制在3次以内比较好,太多了阅读就成问题了。

网友(5):

,堆栈默认的大小是2M,可以自己设置。
不过建议递归别太深了。