Рекурсия в функциональном программировании

Концепции парадигм программирования

Eleanor Thomas

Senior Data Analytics Engineer

Что такое рекурсия?

  • Рекурсивная функция: функция, которая вызывает саму себя
  • Должна содержать условие завершения, или базовый случай
  • Также содержит рекурсивный вызов с изменённым входным значением
0 | def my_recursive_function(input_value):
1 |     # base case
2 |     if base_case_condition:
3 |        return base_case_output_value
4 |     # recursive call
5 |     else:
6 |        return my_recursive_function(modified_input_value) + some_modification
Концепции парадигм программирования

Зачем использовать рекурсию?

  • Некоторые задачи проще решать с помощью рекурсии
  • Числа Фибоначчи:
    • 0, 1, ...
    • 0, 1, 1, ...
    • 0, 1, 1, 2, ...
    • 0, 1, 1, 2, 3, ...
Концепции парадигм программирования

Ещё примеры рекурсии

Файловая система

  • Поиск в файловой системе
Концепции парадигм программирования

Ещё примеры рекурсии

Файловая система; алгоритм сортировки

  • Поиск в файловой системе
  • Некоторые алгоритмы сортировки, например сортировка слиянием
Концепции парадигм программирования

Ещё примеры рекурсии

Файловая система; алгоритм сортировки; структура данных

  • Поиск в файловой системе
  • Некоторые алгоритмы сортировки, например сортировка слиянием
  • Ряд структур данных определяется рекурсивно
Концепции парадигм программирования

Рекурсия и итерация

  • Любую рекурсивную функцию можно реализовать итеративно
  • Итеративная функция использует цикл вместо рекурсивного вызова
def iterative_factorial(n):
    result = 1
    for i in range(1, n + 1):
        result = result * i
    return result
Концепции парадигм программирования

Давайте потренируемся!

Концепции парадигм программирования

Preparing Video For Download...