Базовый вопрос о рекурсии головы в Python 3 - PullRequest
0 голосов
/ 16 апреля 2019

Очень простой вопрос, так как я совершенно новичок в этих понятиях.Я поместил эту функцию рекурсии головы в Python Tutor, чтобы лучше понять, что происходит - почему эта функция даже не трогает отпечаток («Подсчет после рекурсивного вызова:») до ОЧЕНЬ конца?Продолжение В - почему числа затем печатаются по порядку после прохождения через возвратную часть оператора if?

Я чувствую, что мне здесь не хватает чего-то сверхосновного / переосмысления этого, ха-ха

PS.Пардон, супер плохое форматирование, если так получится в посте, я новичок в этом лол.

def head_recursion(count):

    if count <= 0:

        print('Base case reached! HEAD RECURSION')

        return

    head_recursion(count-1)

    print('Count after recursive call:',count)


def main():

    print('Executing head_recursion(3)...')

    head_recursion(3)

main()

1 Ответ

0 голосов
/ 16 апреля 2019

Поскольку рекурсивный вызов должен завершиться (достичь базового случая), прежде чем он сможет вернуться, и пока он не вернется, печать под ним не может быть запущена.

def head_recursion(count):
    if count <= 0:
        print('Base case reached! HEAD RECURSION')
        return 

    # Execution gets to here, then makes a recursive call.
    # It can't continue past here until the recursive call it made returns
    head_recursion(count-1) 

    print('Count after recursive call:',count)

Так же, как и с любым другим кодом:

y = some_function()
print("Reached") # This won't run until some_function has returned
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...