language-agnostic - 在任何情况下我都想在递归上使用显式堆栈吗?

标签 language-agnostic recursion stack

在某些情况下,我想在我的算法中使用显式堆栈数据结构,而不是进行递归(使用调用堆栈)吗?

用一种方法比另一种方法有什么好处吗?我认为使用显式数据结构会更高效,因为它不需要方法调用,但那又是微优化领域。

最佳答案

我能想到一个你可以争论支持显式堆栈的案例:

您所处的系统可能进入和/或退出堆栈帧的成本很高,而且您的递归深度非常深。想象一下树中的深度优先。

在这样的设置中,如果您发现请求的树节点有 100 层深,如果您使用递归,则需要一个接一个地销毁 100 个堆栈帧。

使用显式堆栈,您只需从函数返回,整个堆栈将立即释放。

关于language-agnostic - 在任何情况下我都想在递归上使用显式堆栈吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1571102/

相关文章:

c++ - 用 2x1 block 平铺 2xM 阵列以最大化差异 - INOI 2008,P2

assembly - MAC-1 汇编递归

c - printf() var-arg 引用如何与堆栈内存布局交互?

language-agnostic - 为什么不是每种类型的对象都可序列化?

algorithm - 如何对没有随机内点的多边形进行三角剖分?

regex - 获取 URL 的一部分(正则表达式)

architecture - 调用栈内存架构

language-agnostic - 为什么只可以添加功能语言列表?

有人可以帮我理解下面代码中的递归吗?

c++ - 访问栈和堆哪个更快?