#python-3.x #recursion #stack
#python-3.x #рекурсия #стек
Вопрос:
Очень простой вопрос, поскольку я совершенно новичок в этих концепциях. Я поместил эту функцию рекурсии головы в Python Tutor, чтобы лучше понять, что происходит — почему функция даже не касается print (‘Count после рекурсивного вызова:’) до САМОГО конца? Последующий вопрос — почему числа затем печатаются по порядку после выполнения возвращаемой части оператора 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:
Поскольку рекурсивный вызов должен завершиться (достичь базового варианта), прежде чем он сможет вернуться, и пока он не вернется, печать под ним не может выполняться.
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
Комментарии:
1. Спасибо! Это имеет смысл, я не знал этого о возврате, но подумал, что это должно быть как-то связано с этим 🙂