Составить рекурсивную программу для получения на экране дисплея следующего рисунка

Пыталась выполнить рисунок как на первом фото. Однако, вышло то, что на втором, и не могу понять как это исправить. Также, не получается добавить вокруг маленьких кружочков еще кружки.
КОД:

import os
import matplotlib.pyplot as plt
import math

plt.rcdefaults()

fig, ax = plt.subplots()

n = int(input('Введите количество ветвей фигуры: '))  
k = int(input('Введите количество звеньев фигуры: '))  
R = 1 


def picture(x1, y1, R, n, k):
    if k > 0:
       
        circle = plt.Circle((x1, y1), R, color='black', fill=False)
        ax.add_patch(circle)

       
        for i in range(n):
            x2 = x1 + 2 * R * math.cos(2 * i * math.pi / n)
            y2 = y1 + 2 * R * math.sin(2 * i * math.pi / n)

           
            plt.plot([x1, x2], [y1, y2], color='black')

            
            picture(x2, y2, R / 3, n, k - 1)  


picture(0, 0, R, n, k)

plt.subplots_adjust(left=0, right=1, bottom=0, top=1)
plt.axis('equal')  
plt.axis('off')    

plt.show()

введите сюда описание изображения

введите сюда описание изображения


Ответы (1 шт):

Автор решения: MBo

Лишнее рисование убираем, нужное переносим в соответствующее место

def picture(x1, y1, R, n, k):
    if k > 0:

        for i in range(n):
            x2 = x1 + 2 * R * math.cos(2 * i * math.pi / n)
            y2 = y1 + 2 * R * math.sin(2 * i * math.pi / n)


            #plt.plot([x1, x2], [y1, y2], color='black')


            circle = plt.Circle((x2, y2), R/3, color='black', fill=False)
            ax.add_patch(circle)
            picture(x2, y2, R / 3, n, k - 1)


picture(0, 0, R, n, k)

введите сюда описание изображения

Для того, чтобы заполнить и центр, перед циклом можно вставить:

    circle = plt.Circle((x1, y1), R/3, color='black', fill=False)
    ax.add_patch(circle)
    picture(x1, y1, R / 3, n, k - 1)

(тут уже можно играть - не отключить ли некоторые окружности для сохранения "легкости")

введите сюда описание изображения

→ Ссылка