【问题标题】:Replace Recursion with Iteration using Explicit Stack使用显式堆栈将递归替换为迭代
【发布时间】:2015-10-26 12:38:35
【问题描述】:

在递归函数调用中,它都是关于隐式堆栈维护的,那么是否可以使用显式使用堆栈的迭代函数替换所有递归函数?

【问题讨论】:

  • 你是在问 Lisp 是否可以用低级语言实现?
  • @John Coleman 不,我要求的是一种通用的方式。
  • 我的观点是,答案是显然是的,因为像 Lisp 这样的语言通常是用缺乏递归的低级语言实现的。递归是一种高阶抽象,在实践中几乎总是根据较低级别的抽象(例如堆栈)来实现,而这些抽象本身是根据更低级别的抽象来实现的。

标签: recursion stack


【解决方案1】:

是的。当然,使用“真实”堆栈会慢一些,但我可以想到两个优点: - 代码不受本机堆栈大小的限制 - 如果只是用于搜索值,则很容易摆脱递归(与breaking out of a recursion相比)

这是using explicit stack instead of recursion的一个很好的例子

【讨论】:

    猜你喜欢
    • 2018-12-02
    • 2017-03-12
    • 2011-04-29
    • 2015-03-03
    • 2012-02-23
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多