diff --git a/docs/zh/guide/SICP.md b/docs/zh/guide/SICP.md index 7ae3412db5..1a7604b0ac 100644 --- a/docs/zh/guide/SICP.md +++ b/docs/zh/guide/SICP.md @@ -25,6 +25,62 @@ + SICP中文译本:[《计算机程序的构造和解释》](https://book.douban.com/subject/1148282/) + SICP课本官网:https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html +## 第7课:用高阶函数做抽象-lambda,let ++ B站回放:https://www.bilibili.com/video/BV16T42117es/ ++ 操作系统:Debian 12 ++ 墨干版本: v1.2.5.2 + +MathAgape(人类)总结的视频内容 +### 预热 ++ `00:19` 用 let 循环一个函数运行多次(这是针对习题1.22-1.24的答疑;有些程序运行一次时间极短,难以统计时间,可用循环很多次的方式解决) ++ `03:55` 比较 Python + +### 正课 ++ `07:14` 本课会替换掉书本上较为复杂的数学例子,让编程教程更易懂 ++ `08:43` 回顾第一课的观念:编程的基本原理是对数据和计算的组合和抽象(总结,非书上原话);本课重点:用函数去做计算的组合和抽象 ++ `09:18` 以求和公式为例,讲解在参数中传递函数值(函数也可作为参数) ++ `12:42` 用 lambda 构造匿名函数的好处 ++ `14:46` 以斐波那契数对,讲解用 let 创建局部变量的好处(避免重复计算,方便修改) ++ `17:36` 实例:区间折半法,搜索算法,二分查找法 ++ `29:08` 实例:寻找不动点(在函数的有限次迭代之后回到相同值的点叫做周期点;不动点是周期等于 1 的周期点) ++ `34:32` 总结 +### 答疑 ++ `38:32` Scheme 的 let 相当于 Python 的?;宏:let*;let 与 define + +## 第6.2课:时空复杂度习题1.14~1.20讨论 ++ B站回放:https://www.bilibili.com/video/BV1E1421U7AM/ ++ 操作系统:Windows 11 ++ 墨干版本:v1.2.5.1 + +MathAgape(人类)总结的视频内容: ++ `00:22` 习题1.14 ++ `08:07` 习题1.15 + - `08:46` 法1:用调试控制台查看计算次数 + - `09:37` 法2:用全集变量输出计算次数 + - `13:22` 法3:用参数变量模拟全局变量,更符合函数式编程的本意 ++ `14:28` 习题1.16 + - `14:34` 用分段函数表示 ++ `19:41` 习题1.17 + - `20:22` 位运算 + - `31:28` 逻辑与 ++ `38:12` 习题1.18 + - `39:45` 矩阵乘法 + - `42:23` 用 Octave 插件计算矩阵 + - `45:33` 下载 Octave ++ `47:08` 习题1.20 + - `51:00` 打印应用序求值计算过程次数 + +## 第6.1课:时空复杂度随堂练习答疑 ++ B站回放:https://www.bilibili.com/video/BV13r421h7gi/ ++ 操作系统:Windows 11 ++ 墨干版本:v1.2.5.1 + +MathAgape(人类)总结的视频内容: ++ `00:24` 优化 list-min ++ `03:28` 实现 append ++ `04:49` 比较不同斐波那契算法的时空复杂度,并通过实验比较真实消耗时间(详细讲解了数形递归的时空复杂度如何估算) ++ `15:52` 墨干图形编程 + ## 第5课:时空复杂度 + B站回放:https://www.bilibili.com/video/BV1N1421Q78o/ + 操作系统:UOS 1060 (龙芯3A5000)