Рекурсия не зашла в мою ту...ю голову

shalfey

Новичок
Пользователь
Дек 12, 2024
3
0
1
Простейший код. Рекурсия.
Python:
def draw(  n):
    if n == 0:
       return
    print( 'n =', n)
    print('1')
    draw(  n-1)
    print('2')
  
    print('3')

    
draw(2)


вывод в консоль
n = 2
1
n = 1
1
2
3
2
3
Вопрос , почему код выводит два раз цифры 2 и 3
 

shalfey

Новичок
Пользователь
Дек 12, 2024
3
0
1
Функция последние два ряда кода повторяет n раз, че то не врубаюсь. Она поднимается вверх по вызовам.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 668
475
83
когда последняя функция в стеке рекурсии завершается, завершаются остальные, которые выше по стеку

вывод в консоль
n = 2 - первый вызов print( 'n =', n)
1 - первый вызов print('1')
n = 1 - второй вызов (рекурсия) print( 'n =', n)
1 - второй вызов (рекурсия) print('1')
2 - второй вызов (рекурсия) print('2')
3 - второй вызов (рекурсия) print('3')
2 - первый вызов print('2')
3 - первый вызов print('3')
 

shalfey

Новичок
Пользователь
Дек 12, 2024
3
0
1
Спасибо а вот если за второй рекурсией идет еще одна то это треш. Я не выдумал это пример из книги по Python, эта рекурсия с помошью черепашки рисует снежинку. Там ваще....
 

Форум IT Специалистов