第 12 课
递归与分形
1 / 1 · ← → 翻页
第 12 课
复杂形态可以从短规则中生长。

导言
分形:整体像局部。
递归:函数调用自己。
停下来,并且回到原位。
现象

同一条生长规则,不同的尺度。
原理
篇幅短,不等于形态简单。
层数加一,枝条大约加倍。
辨析
循环:同一层,重复 k 遍。
递归:新的执行,更小的同类问题。
原理
n=0:此处不再生长。
没有退出条件,规则未写完。
例证
def draw_tree(length, n):
if n == 0:
return
t.forward(length)
t.left(30)
draw_tree(length * 0.7, n - 1)
t.right(60)
draw_tree(length * 0.7, n - 1)
t.left(30)
t.backward(length)请打开「在线 IDE」。先跑 n=2。
例证
两次内层调用立刻返回。
n 增大,Y 的两臂上再长出 Y。
辨析
内层不还原,外层接到叶尖上。
错误按层数放大。
那不是画风,是模型断裂。
实践
先朝北,调用 draw_antenna(80, 3)。
左转 45∘,长度乘 0.6。
n == 0 返回;结束时仍朝北、停在起点。
请打开「在线 IDE」。
小结
自相似是过程的性质。
递归必须有退出条件。
画完子树,送海龟回家。
下一课
软件工程。
模块化、分层、测试、框架与版本。