Module (59%)
Section (100%)

Основные тезисы

1. Функция может вызывать другие функции или даже саму себя. Ситуация, когда функция вызывает саму себя, известна как рекурсия, и функция, которая вызывает сама себя и содержит определенное условие завершения (т.е. базовый случай - условие, которое указывает функции не выполнять любые дальнейшие вызовы этой функции) называется рекурсивной функцией.

2. Вы можете использовать рекурсивные функции в Python, чтобы написать чистый, элегантный код и разделить его на более мелкие, организованные части. С другой стороны, Вам нужно быть очень осторожным, так как может быть легко допустить ошибку и создать функцию, которая никогда не завершается. Вы также должны помнить, что рекурсивные вызовы потребляют много памяти и поэтому иногда могут быть неэффективными.

При использовании рекурсии нужно учитывать все ее достоинства и недостатки.

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

# Recursive implementation of the factorial function. def factorial(n): if n == 1: # The base case (termination condition.) return 1 else: return n * factorial(n - 1) print(factorial(4)) # 4 * 3 * 2 * 1 = 24



Упражнение 1

Что произойдет, когда Вы попытаетесь запустить следующий код и почему?

def factorial(n): return n * factorial(n - 1) print(factorial(4))

Упражнение 2

Какой вывод будет у следующего фрагмента?

def fun(a): if a > 30: return 3 else: return a + fun(a + 3) print(fun(25))