谨以本文献给过去的自己
感谢 https://github.com/kenkangxgwe 的指正。
本文对迭代进行一些形式化定义。
面向的软件为
- 几何画板,(停止维护)
- 网络画板,(活着)
- inRm3D,(维护中)
- 几何图霸,(维护中)
- …
形式化定义
一个简单例子。
考虑二叉树的迭代

初像 = [A, B]
f = 初像 ⇒ [
[B 朝 A 缩放 1/2 再旋转 135度,A],
[B 朝 A 缩放 1/2 再旋转 -135度,A],
]
g: 绘制线段连接 A, B
用实际代码进行证明。代码是 p5.js 的
单次迭代

完整迭代

于是点/参数迭代彻底解决。
纯参数迭代
同构于没有数组,只有循环的语言。
多次循环用单次循环拼接。
改写为
意思到了就行
高次迭代更像是
里面无法 break.
下面写几个映射的观点。
循环
编程操作 | 迭代对应 |
S++ | S→S+1 |
S+=A | S→S+A |
S=-S | S→-S |
let mut i = 1 | 新建参数 i = 1 |
println! | 点迭代+文本 |
以经典迭代 fib 数列为例。
next_{a,b} 的引入是循环不变式
翻译成作图步骤
建 5 个变量
point(next_a,0)
四个映射,从上到下写。
流程控制
实现 if
编程 | 迭代 |
if(a)then d=b else d=c end | d = if(a,1,0)* b + if(a,0,1)* c |
假如多个 if 嵌套 | 1. 全拆开列真值表 2. 嵌套 if |
构建 3n+1 猜想
对应步骤
建参数 n
计算 nn = if(n%2==0,n/2, 3*n+1)
point(n,0)
迭代 n→nn,停止条件 n == 1
本文完