Функция может вызывать другие функции, включая саму себя. Функция, которая вызывает сама себя, называется рекурсивной функцией.
Вот пример иллюстрации рекурсивной функции в Python 3.
Вы можете видеть, что функция count_down() вызывает себя снова и снова, пока параметр «count» не станет равным нулю, после чего функция выводит «Go!» и выходит.
Примечание. Каждый вызов count_down создает новое пространство имен для локальной области действия функции. Никакие переменные не сохраняются между вызовами.
Вопрос. Сколько раз вызывается count_down(), если скрипт вызывает count_down(5)?
О: 6. В сценарии первый вызов — count_down(5). После этого count_down() вызывает себя с 4, 3, 2, 1 и, наконец, с 0. Последний экземпляр не вызывается снова, а вместо этого возвращается.
Вопрос. Сколько раз вызывается count_down(), если скрипт вызывает count_down(0)?
О: 1. При первом вызове count_down() он печатает «GO!» и возвращается».
В: Определяем ли мы параметры по-разному для рекурсивных и нерекурсивных функций? Пожалуйста, ответьте да или нет.
О: На самом деле нет. Рекурсия возникает, когда операторы функции включают вызовы самой функции. С точки зрения того, как определяются параметры, особой разницы нет.
Рекурсивный пример вызова
Напишите оператор, который вызывает рекурсивную функцию reverses_alphabet() с вводом start_letter.
Пример вывода с вводом: «f»
f e d c b a
Вот код, который вы заполните.
def backwards_alphabet(curr_letter): if curr_letter == 'a': print(curr_letter) else: print(curr_letter) prev_letter = chr(ord(curr_letter) - 1) backwards_alphabet(prev_letter) starting_letter = input() ''' Your solution goes here '''
О: Ответ ниже. Вы просто сделаете первый вызов reverse_alphabet и передадите start_letter. Команда input() примет ввод букв от пользователя.
backwards_alphabet(starting_letter)
Если вы еще не присоединились к Medium, но хотели бы это сделать, нажмите здесь. Зарегистрировавшись на Medium по моей реферальной ссылке, я получу небольшую комиссию.