递归读取和非递归读取

发表于 2026-08-06 00:00 662 字 4 min read

吕小布 avatar

吕小布

The first step is to establish that something is possible; then probability will occur.

暂无目录
前两天用agent开发的时候,遇到个一个新概念——递归读取。现在来学习一下,记一下笔记

起因:在 agent 开发中遇到的新概念

前两天用 agent 开发的时候,遇到个一个新概念——递归读取。现在来学习一下,记一下笔记

先说术语:递归的英文怎么说?

递归中文给我的感觉就是两次词硬凑在一起,显得让人看不懂

去搜了一下英文:

  • 递归recursion
  • 递归的recursive
  • 递归读取目录recursively read a directory
  • 更常见的技术说法:recursive directory traversal

recursion 有“返回、再次回到”的含义。程序执行一个规则时,遇到相同结构,就会再次使用自己这套规则

不递归读取:只看「可见的这一层」

首先既然是有递归读取——那么肯定还有不递归读取

这张图的话讲的是不递归:意思就是扫描目录的时候,只读取这一层的目录,如果这个目录里有文件夹,文件夹内的文件就不读取。——我有一个好的想法——叫可见目录——就是只能读取目前能看见的

c1d841471b0aaac873d7d9fd0b718ba8.png

递归读取(recursive directory traversal):读取全部文件

这是第二张——递归读取。简单来说就是读取全部文件,不仅可以读取这一层的文件,下面的文件都可以读取

d486fd5e716e03b3c963a5ee28770a74.png

这张图写的可以进入子目录继续读,那么子子目录呢?——查了一下是可以的

递归读取的两种方式:DFS 与 BFS

第三张图:递归读取分为两种:DSF(深度优先)和 BFS(广度优先)

d345ef060ec3a5c5ffc6c47823b182aa.png

DFS——Depth-First Search(深度优先搜索) BFS——Breadth-FIrst Search(广度优先搜索) Breadth 是“宽度

听名字就知道 DFS 是一直往下读取的,而 BFS 是一层一层读取的

什么时候该用递归,什么时候不用?

第四张:如何选择正确的读取方式呢?这个我就有点好奇了

3838670bac2cb384f7f7e19dc485a048.png

只在当前目录找就不递归,如果不确定在不在当前目录就递归找

DFS 还是 BFS,怎么选?

那么什么时候该用 DFS,什么时候改用 BFS 呢

732dbdf47d4a6a248da5093ee9a3c650.png

7073cc19e977e3ee3fed8eb44a0e71ee.png

1e97c45036e514f5e9962890a13db0fb.png

3c2c08076cc93f94c357a3ece34b9398.png

如果想知道最短路径就用 BFS,如果不介意,就像看当层有没有就看 DFS

看完四张图的感受

看了这四张图,大致都了解了,不得不感叹现在 ai 的强大,比书上网上的容易看懂多了

© 2024 - 2026 吕小布 @insist
Powered by theme astro-koharu · Inspired by Shoka