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中使用。
    CS61A 学习笔记 lecture 6 recursion
    print_sums(1)(3)(5)调用可以分为3步:
    CS61A 学习笔记 lecture 6 recursion

example 10 currying

  • currying 指的是将一个多参数函数转换为单参数函数,该函数返回一个需要传入剩余参数的函数。
    CS61A 学习笔记 lecture 6 recursion

lecture 6 recursion 递归

review:Philosophy of Functions

  • 语法和语义
  • 函数抽象
    CS61A 学习笔记 lecture 6 recursion

递归和归纳

递归思维是归纳思维的一种。

递归
  • base case
  • Nth case可以由(N-1)th case和N的表达式表示
归纳

CS61A 学习笔记 lecture 6 recursion

子问题和自相似
  • 谢尔宾斯基三角/谢尔宾斯基地毯的描述与python表示
    CS61A 学习笔记 lecture 6 recursion
(个人补充)
递归是数学归纳法思维的编程体现
  • 链条:计算过程存在递归链条
  • 基例:存在一个或多个不需要再次递归的基例
  • 递归链条只关心n与n-1的关系,不关心n-1具体怎么实现(经典案例:汉诺塔)
  • 自相似与分形几何,谢尔宾斯基三角、科赫曲线等
上一篇:Lecture 7:Ax = 0


下一篇:[2021 Spring] CS61A 学习笔记 lecture 10 containers and sequences