You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的0L-System生成谢尔宾斯基三角遇到问题求助

修复Python Turtle实现谢尔宾斯基三角的问题

问题分析

你的代码存在两处核心问题,导致无法生成完整的谢尔宾斯基三角:

  • 基础绘制逻辑错误:当n=0时,仅执行三次forward(size)但未转向,画出的是一条长线段而非闭合的等边三角形。
  • 递归分支逻辑错误:当前的递归调用与转向组合不符合谢尔宾斯基三角的分形规则,无法正确定位三个小三角形的绘制位置,导致图形缺失。

修正后的代码

from turtle import *

def sierpinksi(size: int, n: int):
    if n == 0:
        # 基础情况:绘制闭合的等边三角形
        for _ in range(3):
            forward(size)
            right(120)
    else:
        # 递归绘制三个角的小三角形,遵循分形规则
        sierpinksi(size // 2, n - 1)
        forward(size // 2)
        sierpinksi(size // 2, n - 1)
        backward(size // 2)
        right(120)
        forward(size // 2)
        left(120)
        sierpinksi(size // 2, n - 1)
        right(120)
        backward(size // 2)
        left(120)

# 调整初始位置,让图形居中显示
penup()
backward(100)
left(60)
pendown()

sierpinksi(200, 2)
done()

修正说明

  1. 基础绘制修正:在n=0的循环中添加right(120),确保每次前进后转向,画出完整的等边三角形。
  2. 递归逻辑修正:通过前进、后退和转向操作,依次定位原三角形的三个角位置,分别绘制小三角形,符合谢尔宾斯基三角“三分大三角形,保留三个小三角”的分形规则。
  3. 初始位置调整:通过抬笔移动,让生成的图形居中显示,避免部分内容超出窗口范围。

内容的提问来源于stack exchange,提问作者Tom Riddle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:35:16