【发布时间】:2012-02-23 19:20:26
【问题描述】:
如何将使用全局变量的递归函数转换为迭代函数?
其中一个例子是使用深度优先搜索来跟踪路径:
path = []
function dfs(node)
node.visited = true
path.append(node)
if node == goal
print path
stop;
for child in node.children
if !child.visited
dfs(child)
path.pop()
我将如何使用迭代和堆栈来做到这一点?
【问题讨论】:
-
此链接中有一个 C# 示例可以帮助您:msdn.microsoft.com/en-us/library/bb513869.aspx
-
你知道不使用全局变量的函数怎么做吗?
-
那么你知道的方法到底是哪里出了问题?
-
@n.m:当您尝试回溯状态时,它会崩溃。我可以将
path设为非全局变量,但这会产生非常大的开销。 -
我看不出它是如何导致大量开销的?例如 rio 的答案没有使用太多的内存或其他开销。
标签: algorithm language-agnostic recursion stack