Проблеми використання рекурсивних функцій
Задача. Обчислити n-ий елемент послідовності Фібоначчі
Математичний запис | програмний код |

| def F(n): ____if n==0 or n==1: ___________return 1; _______else: ________return f(n-1) + f(n-2) |
Під час обчислення значення F(6) будуть викликані функції обчислення F(4) та F(5). У свою чергу, для обчислення F(4) будуть викликані F(2) та F(3), а для Fib(5) – пара F(3) та F(4). Можна намалювати «дерево рекурсивних викликів»:

Як видно з малюнка, що, наприклад, F(3) обчислюється три рази.
Якщо розглянути обчислення при великих N, то повторних обчислень буде дуже багато. Це і є основний недолік рекурсії - повторні обчислення тих самих значень. Крім того, з рекурсивними функціями пов'язана одна серйозна проблема: дерево рекурсивних викликів може виявитися нескінченним і комп'ютер «зависне».
Способи вирішення проблеми "повторних обчислень" та "нескінченності дерева викликів":
перетворити рекурсивну функцію на циклічний алгоритм;
застосувати метод динамічного програмування (масиви + циклічний алгоритм)
застосувати рекурсію із запам'ятовуванням (рекурсивна функція+масив)