尽管深度优先搜索最好被认为是递归的 算法,递归不是实现它的最佳方式。的确如此 通过引起堆栈,上面给出的代码将因许多大图而失败 溢出。另一种实现方式是替换递归 堆栈与显式堆栈
我是从有关深度优先图遍历here
的页面中读到的我想知道这是否是因为递归函数使用了内存的堆栈部分;但另一方面,显式堆栈在堆上声明得更大。
答案 0 :(得分:1)
是的,由于计算机程序的架构,这是一个限制。为隐式堆栈分配的内存比堆空间更有限。由于递归的工作方式 - 堆栈空间很容易耗尽。这就是为什么显式堆栈的概念通常用于大图的原因。
同样通过使用显式堆栈,我们可以使用我们程序可用的整个内存空间 - 这也减少了内存不足的可能性