Invisible писал(а):
Подскажите, какое время работы и сложность алгоритма для поиска n-ого числа Фибоначчи при помощи рекурсивного алгоритма.
Время работы и сложность
отвратительные. Не делайте так никогда. Если делать обычным циклом, забывая предыдущие n-3 значения, то будет надежно O(n) по времени и O(1) по памяти.
А вот рекурсивно ...
Ну представьте как это будет. Чтобы посчитать Fib(n), вы что делаете? Сначала считаете Fib(n-2), а потом считаете Fib(n-1), в процессе чего во
второй раз вычисляете Fib(n-2).
А теперь намек на точную цифру. Обозначим через T(n) количество операций сложения, требуемых для подсчета Fib(n). Очевидны следующие факты:
T(1)=0;
T(2)=0;
T(n)=T(n-1)+T(n-2)+1 при n>2.
Ну хотя бы из этих соображений видно, что скорость роста T(n) как минимум экспоненциальна.
Аналогичную оценку можно провести и для используемой алгоритмом памяти: при вызове каждой новой функции в стеке выделяется фиксированное количество места под аргумент. Количество вызовов функции фактически тоже равно T(n) - ведь при каждом вызове совершается ровно одно сложение. Так что не избежать вам переполнения стека в таких условиях ...