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

Recursion 如何使用迭代模拟DFS递归返回调用?,recursion,iteration,Recursion,Iteration,我理解迭代DFS代码。 然而,在我看来,当我们使用迭代时,我们只能模拟DFS的前向递归调用,而不能模拟返回语句。例如,如果我想计算N!使用递归解决方案的迭代模拟版本,我们无法实现它 我的结论正确吗? 请举一个反例。我不清楚您在哪里感到困惑,这可能是您困惑的结果。返回的迭代同源项不是显式的;这是一个不同的过程。控制流只是返回到循环的顶部。数据流取决于算法:例如,从堆栈中弹出一个项,或将结果存储在数组中 如果N阶乘是数学N!计算时,迭代返回只是下一个循环迭代,部分乘积存储在局部变量中: # valu

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

我的结论正确吗?
请举一个反例。

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

如果N阶乘是数学N!计算时,迭代返回只是下一个循环迭代,部分乘积存储在局部变量中:

# value of n is given
prod = 1

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

# yield prod as result