如何使用迭代模拟DFS递归返回调用?

时间:2017-09-07 19:56:46

标签: recursion iteration

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

我对这个结论是否正确? 一个反例将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

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

如果“nth factorial”是数学N!计算,迭代返回只是下一个循环迭代,部分产品存储在局部变量中:

# value of n is given
prod = 1

for i in range(n, 1, -1):
    prod *= i

# yield prod as result