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

Python递归绘制嵌套圆形问题:无法生成完整分形图形求助

解决递归分形圆形绘制不完整的问题

问题核心

当前代码仅能生成一层额外小圆形,无法实现多层分形结构,问题出在递归的半径缩放逻辑和冗余的重复绘制代码上。

修改后的完整代码

import turtle

def centered_circle(circle_radius, turtle):
    turtle.penup()
    turtle.forward(circle_radius)
    turtle.left(90)
    turtle.pendown()
    turtle.circle(circle_radius)
    turtle.penup()
    turtle.right(90)
    turtle.backward(circle_radius)
    turtle.penup()

def recursive_circles(circle_radius, turtle):
    if circle_radius > 2:
        # 绘制当前层级的中心圆
        centered_circle(circle_radius, turtle)
        
        # 处理上方分形分支
        turtle.left(90)
        turtle.forward(circle_radius * 1.5)
        # 按比例递归,用当前半径的1/2作为新半径
        recursive_circles(circle_radius * 0.5, turtle)
        turtle.backward(circle_radius * 1.5)
        
        # 处理下方分形分支
        turtle.right(180)
        turtle.forward(circle_radius * 1.5)
        recursive_circles(circle_radius * 0.5, turtle)
        turtle.backward(circle_radius * 1.5)
        
        # 处理右侧分形分支
        turtle.left(90)
        turtle.forward(circle_radius * 1.5)
        recursive_circles(circle_radius * 0.5, turtle)
        turtle.backward(circle_radius * 1.5)

def main():
    recursive_turtle = turtle.Turtle()
    recursive_turtle.speed(0)
    myWin = turtle.Screen()
    
    recursive_turtle.penup()
    recursive_turtle.goto(0, 100)
    recursive_turtle.setheading(90)
    
    recursive_circles(50, recursive_turtle)
    
    myWin.exitonclick()

if __name__ == "__main__":
    main()

关键修改说明

  1. 递归半径改为比例缩放:将原代码中circle_radius - 25的固定数值减法,替换为circle_radius * 0.5的比例缩小逻辑,确保每一层的小圆形都能按比例生成下一层更小的圆形,直到半径小于等于2时触发终止条件。
  2. 移除冗余绘制代码:删掉每个分支中提前绘制centered_circle(circle_radius * 0.5, turtle)的代码,因为recursive_circles函数本身会先绘制当前半径的中心圆,重复绘制会导致层级混乱,移除后递归会自然延续分形结构。
  3. 保留要求的终止条件:全程保留if circle_radius > 2的判断语句,且未使用任何for/while循环。

修改后运行代码,即可生成多层嵌套的分形圆形,与期望效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:25:19