Функция может вызывать другие функции, включая саму себя. Функция, которая вызывает сама себя, называется рекурсивной функцией.

Вот пример иллюстрации рекурсивной функции в 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 по моей реферальной ссылке, я получу небольшую комиссию.