Вы здесь около 99%.
Подумайте о своем базовом корпусе и вашем рекурсивном шаге - когда вы нажмете 0, что вы хотите сделать? Когда вы все еще работаете от n
, что вы хотите?
Если вы измените порядок печати значения, вы достигнете желаемого результата.
def countdown(n):
if n != 0:
countdown(n-1)
print(n)
Причина этого в том, что рекурсивные вызовы идут в стек вызовов. Когда вы нажимаете вызовы на стек, в то время как ваш конечный случай не выполняется, вы будете продолжать добавлять больше вызовов, пока не достигнете базового футляра n == 0
, а затем вы начнете печатать только значения.
Другие вызовы затем попадают в оператор печати, так как их выполнение вернулось к строке после условного.
Таким образом, вызов стек выглядит примерно так:
countdown(5)
countdown(4)
countdown(3)
countdown(2)
countdown(1)
countdown(0)
print(0)
print(1)
print(2)
print(3)
print(4)
print(5)
Не знал об этом декораторе, как здорово! –