Рекурсія — це метод опису, визначення або розв’язання задачі, при якому об’єкт визначається через самоподібний до себе об’єкт. У математиці та інформатиці рекурсія є фундаментальним принципом, що дозволяє розбивати складні задачі на простіші підзадачі одного типу.

Загальне визначення

Рекурсія (від лат. recursio — «повернення») — це процес, у якому функція, процедура або визначення звертається до самої себе, прямо або опосередковано, для розв’язання задачі.

У формальному вигляді рекурсивний об’єкт складається з:

  • базового випадку (умови зупинки)
  • рекурсивного кроку (зведення задачі до меншої або простішої версії самої себе)

Рекурсія в математиці

У математиці рекурсія використовується для визначення функцій, послідовностей і структур.

Приклад — факторіал:

n! = n × (n − 1)!
0! = 1 (базовий випадок)

Інші приклади:

  • числа Фібоначчі
  • рекурсивні ряди
  • фрактальні структури (наприклад, множина Мандельброта)

Рекурсія в інформатиці

У програмуванні рекурсія — це техніка, коли функція викликає саму себе.

Типова структура:

  • перевірка базового випадку
  • виклик самої себе з меншими вхідними даними

Приклад (псевдокод факторіала):

function factorial(n):
if n == 0:
return 1
return n * factorial(n – 1)

Види рекурсії

Пряма рекурсія

Функція викликає саму себе напряму.

Непряма рекурсія

Функція A викликає функцію B, яка в свою чергу викликає A.

Лінійна рекурсія

Кожен виклик породжує лише один новий виклик.

Деревоподібна рекурсія

Кожен виклик породжує кілька нових викликів (наприклад, Фібоначчі).

Хвостова рекурсія

Рекурсивний виклик є останньою операцією функції, що дозволяє оптимізацію.

Рекурсія в структурах даних

Рекурсія природно застосовується до:

  • дерев (бінарні дерева, дерева пошуку)
  • графів (обхід у глибину)
  • списків (рекурсивне визначення елементів)

Наприклад, кожне дерево можна визначити як:

  • порожнє дерево
  • вузол, що містить піддерева

Рекурсія в алгоритмах

Рекурсивні алгоритми часто використовуються для:

  • сортування (швидке сортування, merge sort)
  • пошуку
  • обходу структур даних
  • розв’язання задач «поділяй і володарюй»

Переваги рекурсії

  • природний спосіб опису складних задач
  • компактний і зрозумілий код
  • добре підходить для дерев і ієрархій

Недоліки рекурсії

  • велика витрата пам’яті через стек викликів
  • ризик переповнення стеку (stack overflow)
  • іноді менш ефективна ніж ітерація

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

Рекурсію часто можна замінити циклом (ітерацією), але:

  • рекурсія краще виражає структуру задачі
  • ітерація зазвичай ефективніша за ресурсами

Рекурсія в природі та науці

Рекурсивні або самоподібні структури зустрічаються у:

  • фракталах (сніжинка Коха, папороті)
  • біології (розгалуження судин, дерев)
  • фізиці (масштабна інваріантність)

Філософський аспект

Рекурсія також використовується як метафора:

  • самопізнання (система, що аналізує себе)
  • самоподібні структури мислення
  • нескінченні визначення або парадокси

Типові проблеми рекурсії

  • відсутність базового випадку → нескінченний цикл
  • надмірна глибина викликів
  • дублювання обчислень (вирішується мемоізацією або динамічним програмуванням)

Рекурсія є одним із ключових принципів сучасної математики та інформатики. Вона дозволяє описувати складні системи через їх простіші копії, роблячи її потужним інструментом для моделювання, алгоритмізації та аналізу структур будь-якої складності.