递归:把大事拆成同一件小事
遍历目录、拆解任务、画分形树,套路都一样:自己调用自己。看 Agent 怎么把「做个官网」递归拆成能动手的小任务
本页解决的问题
先给结论「递归:把大事拆成同一件小事」要解决的关键问题是什么?
遍历目录、拆解任务、画分形树,套路都一样:自己调用自己。看 Agent 怎么把「做个官网」递归拆成能动手的小任务
让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。
写下一个问题:试完这个方法后,你能用什么证据回答它?
结论听起来很完整,却没有检查最关键的假设。
老板丢来一句话:「给奶茶店做个官网」。这活没法直接动手——但可以拆。点下面的卡片,把大任务一层层拆开;拆到✋「能直接干了」的小活为止,再点「开工」。留意两件事:拆的时候是自上而下一层层展开;干完的时候,绿色是自下而上「冒泡」汇拢回去的。
递归最神奇的地方是:规则只有一条,结果可以无限复杂。下面这棵树的全部说明书就一句话(写在图下方)。拖动滑块加深「拆解层数」,留意:每根新枝都是上一根的缩小版——规则从头到尾没变过,变的只是规模。
刚才两个演示里藏着递归的全部三个要件。以后你看任何递归,就用这三条验收:
同样的事
「做官网」和「做首页」是同一类问题,能用同一套拆法。要是拆出来的子问题完全是另一码事,递归就用不上了。
规模更小
每拆一层,问题必须变小一圈:官网 → 三个板块 → 一个页面。分形树的每一杈也比上一根短。不变小,就永远拆不完。
终止条件
拆到✋「能直接干了」的叶子就得停。这一条最要命——姊妹篇讲栈那课你见过:递归每深一层就在栈上摞一层,没有终止条件就是爆栈(Stack Overflow)。
「先玩一局 · 帮 Agent 拆任务」里的算法代价曲线
「老板丢来一句话:「给奶茶店做个官网」。这活没法直接动手——但可以 拆 。点下面的卡片,把大任务一层层拆开;拆到✋「能直接干了」的小活为止,再点「开工」。」真正训练的不是背诵步骤,而是识别重复工作:输入变大时,程序到底多做了多少次比较、移动或递归。
先找重复工作,再谈快慢
「递归最神奇的地方是: 规则只有一条,结果可以无限复杂 。下面这棵树的全部说明书就一句话(写在图下方)。拖动滑块加深「拆解层数」, 留意 :每根新枝都是上一根的缩小版——规则从头到尾没变过,变的只是规模」可以拆成输入规模、每轮做什么、以及是否能缩小下一轮范围三个问题。Big-O 是描述增长趋势的语言,不是对每台机器的精确计时;常数、内存和真实数据分布也会影响最终结果。
- 递归 = 同构拆解 :用同一套办法,处理越拆越小的同一类问题
- 拆是自上而下,成果自下而上汇拢 :叶子干完,绿色一路冒泡回根
- 三件套缺一不可 :同样的事、规模更小、终止条件
别把理论最优当成无条件最优
面对 AI 写出的算法,先用小输入手算一遍,再用逐渐放大的数据做基准测试。这样才能把「拆到✋「能直接干了」的叶子 就得停 。这一条最要命——姊妹篇讲栈那课你见过:递归每深一层就在栈上摞一层, 没有终止条件就是爆栈(Stack Overflow)」从一句结论变成可检查的性能判断。
从「先玩一局 · 帮 Agent 拆任务」走到「再看一眼 · 一条规则画一棵树」
「先玩一局 · 帮 Agent 拆任务」先把问题落在「老板丢来一句话:「给奶茶店做个官网」。这活没法直接动手——但可以 拆 。点下面的卡片,把大任务一层层拆开;拆到✋「能直接干了」的小活为止,再点「开工」。 留意两件事 :拆的时候是自上而下一层层展开;干完的时候,绿色是自下而上「冒泡」汇拢回去的」上;到了「再看一眼 · 一条规则画一棵树」,讨论继续推进到「递归最神奇的地方是: 规则只有一条,结果可以无限复杂 。下面这棵树的全部说明书就一句话(写在图下方)。拖动滑块加深「拆解层数」, 留意 :每根新枝都是上一根的缩小版——规则从头到尾没变过,变的只是规模」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。
把这条判断带到下一个场景
算法题换成真实任务后,先找出重复工作,再问输入规模如何变化,最后用一个小基准验证理论判断。这样不会把复杂度记成脱离场景的标签。
- 「先玩一局 · 帮 Agent 拆任务」:老板丢来一句话:「给奶茶店做个官网」。这活没法直接动手——但可以 拆 。点下面的卡片,把大任务一层层拆开;拆到✋「能直接干了」的小活为止,再点「开工」。 留意两件事 :拆的时候是自上而下一层层展开;干完的时候,绿色是自下而上「冒泡」汇拢回去的
- 「再看一眼 · 一条规则画一棵树」:递归最神奇的地方是: 规则只有一条,结果可以无限复杂 。下面这棵树的全部说明书就一句话(写在图下方)。拖动滑块加深「拆解层数」, 留意 :每根新枝都是上一根的缩小版——规则从头到尾没变过,变的只是规模
- 「最后的要点」:Agent 拆任务、遍历目录、分形树 ,全是递归的日常真身
最后的「最后的要点」把讨论落到「Agent 拆任务、遍历目录、分形树 ,全是递归的日常真身」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。
✅ 这一课想和你分享的
- 递归 = 同构拆解:用同一套办法,处理越拆越小的同一类问题
- 拆是自上而下,成果自下而上汇拢:叶子干完,绿色一路冒泡回根
- 三件套缺一不可:同样的事、规模更小、终止条件
- 没有终止条件 = 爆栈:呼应姊妹篇的栈——递归的每一层都摞在栈上
- Agent 拆任务、遍历目录、分形树,全是递归的日常真身
我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。
读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。
如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。
还没有这篇文章的讨论。