#127Средне
Фибоначчи и число вызовов
Время: 1 s · Память: 256 MB
- Рекурсия
Условие
Числа Фибоначчи: , . Их вычисляет рекурсивная функция:
fib(n):
if n <= 2: return 1
return fib(n - 1) + fib(n - 2)
Найдите и сколько всего раз вызывается функция fib при вычислении fib(n) (первый вызов тоже считается).
Формат ввода
Одно целое число ().
Формат вывода
В одной строке два числа: и число вызовов.
Примеры
Ввод
5
Вывод
5 9
Ввод
1
Вывод
1 1
Примечание
Увеличивайте глобальный счётчик на внутри функции. При : fib(5) → fib(4), fib(3); fib(4) → fib(3), fib(2); каждый fib(3) → fib(2), fib(1). Всего вызовов, .
Одни и те же значения считаются снова и снова, поэтому число вызовов очень быстро растёт с : при — почти миллиона. Это цена наивной рекурсии.
