
一起动脑筋 · 先看一个小故事
机器人每进入一个房间,都说“把这个房间的邻居也按同样办法查一遍”。这很像函数调用自己。
把过程摊开来看
- 进入标记房间
- 递归探索一个邻居
- 返回回到当前房间
- 继续下一个未访问邻居
递归自然表达 DFS 的深入与返回。
每层调用记着当前房间和接下来要试的方向。也可以用显式栈实现,不一定必须递归。
轮到你来试一试
不用递归,只用自己维护的栈,能写 DFS 吗?
想好了吗?点开看解释
能。关键是保留深度优先的访问顺序和返回所需状态。
递归自然表达 DFS 的深入与返回。

一起动脑筋 · 先看一个小故事
机器人每进入一个房间,都说“把这个房间的邻居也按同样办法查一遍”。这很像函数调用自己。
递归自然表达 DFS 的深入与返回。
每层调用记着当前房间和接下来要试的方向。也可以用显式栈实现,不一定必须递归。
不用递归,只用自己维护的栈,能写 DFS 吗?
能。关键是保留深度优先的访问顺序和返回所需状态。