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

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

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, ...
Концепції парадигм програмування

Ще приклади рекурсії

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

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

Ще приклади рекурсії

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

  • Пошук у файловій системі
  • Деякі алгоритми сортування, наприклад Merge Sort
Концепції парадигм програмування

Ще приклади рекурсії

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

  • Пошук у файловій системі
  • Деякі алгоритми сортування, наприклад Merge Sort
  • Різні структури даних визначаються рекурсивно
Концепції парадигм програмування

Рекурсія проти ітерації

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

Давайте потренуємось!

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

Preparing Video For Download...