Рассмотрим следующий код:Понимание рекурсивные функции вызовов
def print_mah(n):
if n <= 0:
return
else:
print('mah')
print_mah(n-1)
print_mah(3)
Здесь Python проверяет, если п меньше или равно 0, то он считает, что это Ложные так печатает «ма» и вызывает ту же с n-1 до тех пор, пока n не будет равно 0, поэтому «mah» печатается 3 раза.
Но рассмотрим этот манипулируют код:
def print_mah(n):
if n <= 0:
return
else:
print_mah(n-1)
print('mah')
print_mah(3)
Python проверяет, если п меньше или равно 0, то он считает, что это Ложные так называет ту же функцию снова с п-1, и ' mah 'также печатается 3 раза.
Мой вопрос заключается в том, что почему «ма» не печатается только один раз, другими словами, почему print_mah не вызывается при п = 2, то Python считает, что условие Ложные, так она называет его n = 1 и находит условие: False, поэтому он вызывает его с n == 0 и обнаруживает, что условие равно True, поэтому функция возвращается, и после этого «mah» печатается только один раз ,
Обе версии имеют инструкцию для печати. Один печатает его по пути вниз. Один печатает его по пути вверх. Вы неправильно читаете условие - он проверяет, завершена ли рекурсия. Все остальные случаи включают печать. –