擅长:python、mysql、java
<p>我认为对当前路径和递归使用显式堆栈比较简单:</p>
<pre><code>def search(start_state, neighbors, goal):
path = [start_state]
class PathFound(RuntimeError):
pass
def rsearch(x):
if goal(x):
raise PathFound
for y in neighbors(x):
path.append(y)
rsearch(y)
path.pop()
try:
rsearch(start_state)
except PathFound:
return path
return None # No path exists
</code></pre>
<p>Python具有较低的递归限制,但对于深度优先搜索,这通常不是问题(而且它可以通过<code>sys.setrecursionlimit</code>进行扩展)。在</p>