我理解迭代DFS代码here。 但是,在我看来,当我们使用迭代时,我们只能模拟DFS的 forward 递归调用,而不是return语句。例如,如果我想使用迭代模拟版本的递归解决方案来计算 N!,我们就无法实现它。
我对这个结论是否正确? 一个反例将受到高度赞赏。
答案 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