我的科赫曲线生成算法为何无法正常运行?
问题分析与解决:科赫曲线Turtle代码仅旋转无绘制
问题根源
你的代码存在两个核心问题,导致程序只执行旋转动作就停止:
- 递归逻辑断裂:函数中仅当
degree == 0时才执行t.forward(length),但当degree > 0但length < 3时,代码没有任何绘图操作直接返回。这会让递归到某一层时,后续的前进步骤全部缺失,上层的旋转操作执行后没有对应的线段绘制,最终看起来只有旋转。 - degree参数设置不合理:科赫曲线的阶数(degree)不需要设为50,通常3-5阶就能生成足够复杂的图案。当degree=50时,递归深度极大,
length会快速缩小到远小于3,直接触发上面的逻辑漏洞,导致绝大多数递归调用都没有绘图动作。
修正后的代码
调整递归逻辑,补充length < 3时的绘图操作,同时设置合理的degree值:
import turtle as t def kochCurve(length, degree): if degree == 0: t.forward(length) else: # 当length过小时,直接绘制线段,避免递归断裂 if length < 3: t.forward(length) else: length = length / 3 degree = degree - 1 kochCurve(length, degree) t.right(60) kochCurve(length, degree) t.right(240) kochCurve(length, degree) t.right(60) kochCurve(length, degree) # 使用合理的阶数,比如3阶 kochCurve(300, 3) t.done() # 保持窗口不自动关闭
补充说明
- 添加
t.done()可以让绘图窗口保持打开,避免程序结束后窗口立刻关闭。 - 调整
length为300可以让图案更清晰,你也可以根据需要修改这个值。
内容的提问来源于stack exchange,提问作者superfastsi
相关产品推荐
相关产品推荐

