编程基础篇 · 递归与分治

递归:把大事拆成同一件小事

「做个官网」听着吓人,「写首页的三行文案」谁都会。工程进阶篇里你见过 Coding Agent 接到大需求后自己列小任务清单——它用的思路有个名字:递归。这一课不写一行代码,点一棵任务树、拖一根滑块,你就能拿到这个程序员嘴里最玄的词。

先玩一局 · 帮 Agent 拆任务

老板丢来一句话:「给奶茶店做个官网」。这活没法直接动手——但可以。点下面的卡片,把大任务一层层拆开;拆到✋「能直接干了」的小活为止,再点「开工」。留意两件事:拆的时候是自上而下一层层展开;干完的时候,绿色是自下而上「冒泡」汇拢回去的。

先点最上面的大任务,把它拆开
发现没有?「做官网」和「做首页」其实是同一种问题——只是规模更小。拆「做官网」的方法(分成几块、每块继续拆)原封不动地用在了「设计页面」上。用同一套办法处理越拆越小的同一类问题,这就是递归。Agent 拆任务、程序遍历文件夹(文件夹里还有文件夹)、公司层层分派 KPI,全是这一个套路。
再看一眼 · 一条规则画一棵树

递归最神奇的地方是:规则只有一条,结果可以无限复杂。下面这棵树的全部说明书就一句话(写在图下方)。拖动滑块加深「拆解层数」,留意:每根新枝都是上一根的缩小版——规则从头到尾没变过,变的只是规模。

🌱 全部规则:画一根枝,在末端分两杈,每一杈是「缩小版的自己」——回到本条规则开头。
2 层 共 3 根枝
「自己调用自己」就是这个意思。「画一根枝」这条规则的最后一步,是再执行一遍「画一根枝」。程序里递归函数长得一模一样:函数体的最后一行调用它自己,只是传进去的问题更小了。8 层就是 255 根枝——一条规则,一棵大树。
概念卡 · 递归三件套

刚才两个演示里藏着递归的全部三个要件。以后你看任何递归,就用这三条验收:

1

同样的事

「做官网」和「做首页」是同一类问题,能用同一套拆法。要是拆出来的子问题完全是另一码事,递归就用不上了。

2

规模更小

每拆一层,问题必须变小一圈:官网 → 三个板块 → 一个页面。分形树的每一杈也比上一根短。不变小,就永远拆不完。

3

终止条件

拆到✋「能直接干了」的叶子就得停。这一条最要命——姊妹篇讲栈那课你见过:递归每深一层就在栈上摞一层,没有终止条件就是爆栈(Stack Overflow)

和 AI 的关系再点透一层:你让 Agent「重构整个项目」,它先列出子任务,发现「重构登录模块」还是太大,就继续往下拆——直到每一项都是「改一个文件」这种能直接执行的动作。判断「够小了、能动手了」的那一刻,就是它的终止条件。下一课你会看到,把「拆开的结果再回来」,正是上下文压缩 Compaction 的原理。

✅ 这一课想和你分享的