【问题标题】:How to simulate DFS recursive return call using iteration?如何使用迭代模拟 DFS 递归返回调用?
【发布时间】:2017-09-07 19:56:46
【问题描述】:

我了解迭代 DFS 代码here。 但是,在我看来,当我们使用迭代时,我们只能模拟 DFS 的 forward 递归调用,而不能模拟 return 语句。例如,如果我想使用递归解决方案的迭代模拟版本来计算 N!,我们无法实现。

我对这个结论是否正确? 一个反例将不胜感激。

【问题讨论】:

    标签: recursion iteration


    【解决方案1】:

    我不清楚您在哪里感到困惑——这可能是您的困惑造成的。 return 的迭代同源不是明确的;这是一个不同的过程。控制流只是简单地返回到循环的顶部。数据流取决于算法:例如,您从堆栈中弹出一个项目,或将结果存储在一个数组中。

    如果“nth factorial”是数学 N!计算,迭代 return 只是下一次循环迭代,部分乘积存储在局部变量中:

    # value of n is given
    prod = 1
    
    for i in range(n, 1, -1):
        prod *= i
    
    # yield prod as result
    

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 2021-10-16
      • 2017-12-10
      • 1970-01-01
      相关资源
      最近更新 更多