from turtle import Turtle, Screen
def draw_complex_petal(t, size, depth):
"""
Рекурсивно рисует сложный лепесток.
depth — глубина рекурсии (параметр варианта).
"""
if depth == 0:
return
# Основная дуга лепестка
t.forward(size * 0.3)
t.left(90)
t.circle(size, 180)
t.left(90)
t.forward(size * 0.6)
# Внутренняя деталь (меньший лепесток)
t.left(60)
draw_complex_petal(t, size * 0.45, depth - 1)
t.right(120)
draw_complex_petal(t, size * 0.45, depth - 1)
t.left(60)
# Возврат (рекурсия сама восстанавливает положение благодаря стеку вызовов)
t.backward(size * 0.6)
t.right(90)
t.circle(size, -180) # обратная дуга, чтобы вернуться
t.right(90)
t.backward(size * 0.3)
def draw_pattern(t, petals=8, size=70, depth=3):
"""Рисует симметричный узор из повторяющихся сложных лепестков."""
angle = 360 / petals
for _ in range(petals):
draw_complex_petal(t, size, depth)
t.left(angle)
# === Основная программа ===
screen = Screen()
screen.setup(600, 400)
screen.bgcolor('white')
screen.title('Задание 4 – Вариант 3 (рекурсия)')
t = Turtle()
t.speed(0)
t.pensize(2)
t.color('darkblue')
t.hideturtle()
# Рисуем узор (глубина рекурсии = 3)
draw_pattern(t, petals=8, size=65, depth=3)
screen.exitonclick()