科赫曲线:把一条线段三等分,中段替换为凸起的三角折线,对每段递归重复——每迭代一次线段数乘 4。递归结构极简:draw(n) 先 draw(n-1) 三次夹两次转向——递归的自相似分解教学范本:复杂图形由简单规则的自我重复构成。
递归生成指令序列。示例代码如下:
local SEGMENTS = {}
local function koch(n, length)
if n == 0 then
SEGMENTS[#SEGMENTS + 1] = length
return
end
koch(n - 1, length / 3)
SEGMENTS[#SEGMENTS + 1] = "turn60"
koch(n - 1, length / 3)
SEGMENTS[#SEGMENTS + 1] = "turn-120"
koch(n - 1, length / 3)
SEGMENTS[#SEGMENTS + 1] = "turn60"
koch(n - 1, length / 3)
end
koch(2, 81)
print(#SEGMENTS)
2 次迭代生成 16 条子线段的绘制指令序列——递归自动展开全部自相似细节。
递归层数接线。示例代码如下:
koch(4, 81)
print(#SEGMENTS)
4 次迭代 256 条子线段——迭代次数加一细节翻四倍,递归只多叠一层。
指令序列长度 4 的 n 次幂:迭代 2 次生成 16 段指令约 0.01 毫秒,迭代 6 次 4096 段约 2.4 毫秒——指数增长但前几层已然可用;递归层数等于迭代次数(浅),真正的成本在输出规模本身。对比循环画折线:循环无法表达自相似嵌套,递归是唯一自然写法。
三个不适用场景:一是迭代次数超过 10(400 万段指令),存储与渲染都爆炸,改即时绘制;二是需要精确数学坐标输出的场合,指令序列要再配角度累积器换算坐标;三是非自相似图形(每段替换规则不同),递归分解结构不成立。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 帮会技能栏常年只有两个被动,想学新武学没有途径。藏经阁上线:帮众从世界首领处收集武学残页,每 8 页…
【游戏】 一、业务场景 帮会技能研究只发战力数值,成员学了就忘,玩法理解参差不齐。书院上线:成员捐书入阁供全帮借阅,累计研读…
【语法】 一、隐蔽陷阱 一排旗子分红白蓝三色,要求排成红白蓝三段:多趟排序当然行,限定只许走一遍的写法,扫到蓝色换到队首后如…
【游戏】 一、业务场景 帮里有新人装备凑不齐,老成员压箱底的富余物资又用不上,两头堵。功德箱上线:随手投闲置物入箱,每周需要…
【语法】 一、隐蔽陷阱 求 6 拆成若干正整数之和的方法数:递归把 1+5 与 5+1 算成两种,答案直接翻倍——拆分定义下…
【语法】 一、隐蔽陷阱 摩斯码互转把字母表做成 26 项数组按下标取值,忘了字节与下标差一,输出整体错一位;数字与标点的映射…