谨以本文献给过去的自己
感谢 https://github.com/kenkangxgwe 的指正。

本文对迭代进行一些形式化定义。
面向的软件为
  • 几何画板,(停止维护)
  • 网络画板,(活着)
  • inRm3D,(维护中)
  • 几何图霸,(维护中)

形式化定义


一个简单例子。
考虑二叉树的迭代
notion image
初像 = [A, B]
f = 初像 ⇒ [
[B 朝 A 缩放 1/2 再旋转 135度,A],
[B 朝 A 缩放 1/2 再旋转 -135度,A],
]
g: 绘制线段连接 A, B
用实际代码进行证明。代码是 p5.js 的

单次迭代
notion image
完整迭代
notion image
于是点/参数迭代彻底解决。

纯参数迭代

同构于没有数组,只有循环的语言。
多次循环用单次循环拼接。
改写为
意思到了就行

高次迭代更像是

里面无法 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

本文完
 
Loading...
Steven Lynn
Steven Lynn
喂马、劈柴、周游世界
最新发布
我与 Dify 的半年
2025-3-9
我的2022年终小结
2024-11-9
记录雅思考试经历与一点学习心得
2024-11-9
Hackergame 2024 思路小结
2024-11-9
黑客松、日本、入职:我的2024下半年的总结
2024-11-9
NotionNext:基于Notion和NextJS的开源博客
2024-11-9