CS61A 学习笔记 lecture 6 recursion
- 开头依然是讲解lecture 5的未完成部分。
- 24min开始 main topic recursion。
lecture 5
example 9 delayed recursion
- 实际应用中不会遇到这种代码,但是便于加深对environment及frame的理解
- QA:当一个value没有在local frame中提及,但是在parent frame中存在,也可以在local中使用。
print_sums(1)(3)(5)
调用可以分为3步:
example 10 currying
- currying 指的是将一个多参数函数转换为单参数函数,该函数返回一个需要传入剩余参数的函数。
lecture 6 recursion 递归
review:Philosophy of Functions
- 语法和语义
- 函数抽象
递归和归纳
递归思维是归纳思维的一种。
递归
- base case
- Nth case可以由(N-1)th case和N的表达式表示
归纳
子问题和自相似
- 谢尔宾斯基三角/谢尔宾斯基地毯的描述与python表示
(个人补充)
递归是数学归纳法思维的编程体现
- 链条:计算过程存在递归链条
- 基例:存在一个或多个不需要再次递归的基例
- 递归链条只关心n与n-1的关系,不关心n-1具体怎么实现(经典案例:汉诺塔)
- 自相似与分形几何,谢尔宾斯基三角、科赫曲线等