迭代与递归学习系列:42 个知识点的详细讲解与复盘索引
五篇主线,从循环状态到调用栈、尾递归、递归树与显式栈。每个知识点都有详细章节,区分原文、推导和补充,方便逐项复盘。
阅读顺序:五篇讲解,逐项定位
本系列来自 2026 年 10 月 14 日对《Hello 算法》“迭代与递归”一节的 42 项提炼,以及随后“详细讲解并发布”的请求。42 是本次整理采用的学习粒度,不是原书作者定义的知识点数量。
先沿五篇主线阅读;复盘时,用下方索引直接跳到某一知识点的详细章节。两篇已有笔记保留原路径与原有交互演示,三个独立主题新增文章。
| 顺序 | 主题 | 覆盖知识点 |
|---|---|---|
| 1 | 理解迭代:for、while 与嵌套循环的复杂度 | 01—12 |
| 2 | 理解递归:从函数调用到逐层返回 | 13—26 |
| 3 | 理解尾递归:累加器、执行过程与 Python 的优化边界 | 27—31 |
| 4 | 理解递归树:斐波那契、调用次数与记忆化 | 32—37 |
| 5 | 递归如何变成迭代:显式栈、继续执行的位置与算法取舍 | 38—42 |
每篇都包含机制解释、具体代码或执行状态、误区与建议复盘题。示例输出用于核验确定性行为;几个输入样例不能代替复杂度证明,也不代表已经完成个人复盘。在学习地图中查看概念与文章关联。
来源标记:原文表示页面明确涉及的主题,说明已重新整理;推导表示根据示例分析得到;补充表示官方语言机制或额外适用边界。它们不是逐字摘录。
01—08 · 循环如何推进
| 编号 | 详细讲解 | 来源 | 这一项要掌握什么 |
|---|---|---|---|
| 01 | 迭代是什么 | 原文 | 重复步骤,每轮数据和状态可以改变。 |
| 02 | Python for 的本质 | 补充 | 取得迭代器、逐项绑定,不要求预知总数。 |
| 03 | range 的范围 | 原文 | stop 不包含,步长决定推进方向。 |
| 04 | 累加器 | 原文 | 保存已处理结果,初始化要匹配运算含义。 |
| 05 | while 的执行顺序 | 原文 | 每轮开始前检查,可能执行零次。 |
| 06 | 循环状态的三个环节 | 原文 | 初始状态、继续条件、下一状态。 |
| 07 | 更新顺序影响结果 | 推导 | 先加后乘与先乘后加得到不同序列。 |
| 08 | 循环的终止性 | 补充 | 条件要与推进规则配合并且可到达。 |
09—12 · 怎样分析总工作量
13—19 · 递归如何求解
20—26 · 调用状态如何保留
27—31 · 尾递归与优化
| 编号 | 详细讲解 | 来源 | 这一项要掌握什么 |
|---|---|---|---|
| 27 | 尾递归是什么 | 原文 | 子调用返回后没有依赖结果的待完成计算。 |
| 28 | 累加器参数 | 原文 | 把已完成的结果作为下一层参数。 |
| 29 | 计算发生的阶段 | 原文 | 深入时累计,返回时直接交回答案。 |
| 30 | 尾递归优化 | 原文 | 能否复用调用状态取决于运行时和条件。 |
| 31 | CPython 的实际行为 | 原文/核验 | 用户函数没有尾调用优化,形式不消除深度。 |
32—37 · 递归树与记忆化
38—42 · 转换与取舍
建议的复盘方式:解释、追踪、改边界
- 解释概念:不用术语堆砌,说明它解决什么问题、状态由谁保存。
- 手工追踪:为小输入写出每轮状态,或进入、等待、返回的调用顺序。
- 改变边界:尝试空输入、最小合法输入、非法输入,以及很深或有重复分支的结构。
- 分析增长:分别说明累计执行次数、单次操作成本、同时保留的状态和输出大小。
- 核验证据:对照代码输出与官方语义;把计数和实际耗时分开。
这些题目和方法是建议,不记录为你已经提出或完成的练习。地图的复盘标记目前存储在当前浏览器中,不代表跨设备同步或自动判定掌握。
来源、推导与许可说明
主题依据:krahets / Hello 算法,2.2 迭代与递归 ↗。本系列对知识点结构进行重新组织,加入原创示例、计数推导、输入边界与 Python 官方语义说明;没有复制原书插图。
《Hello 算法》页面采用 CC BY-NC-SA 4.0 ↗。本系列五篇及本索引的改编文字同样按此许可提供;须保留署名、非商业使用及相同方式共享。本说明针对本系列文本,不更改网站其他内容或源码的许可。
语言机制优先核验 Python 官方文档:循环语句 ↗ · 帧对象 ↗ · 求值顺序 ↗ · 缓存 ↗ · CPython 尾调用边界 ↗。复杂度和不变量属于针对示例的推导,计算模型在对应章节注明。
这篇笔记在全书中的位置
本篇已经纳入 Hello 算法 Python 全书精讲。保留原来的章节和路径;后续章节的发布进度以全书覆盖表为准。