Работа мемоизированного Фибоначчи

Задача по программированию с проверкой онлайн

Сложность
Лёгкая
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Функции и замыкания
Рекурсия и перебор
Словари и множества

Функция fib(n) с кэшем устроена так. Если для n уже есть запись в кэше, она сразу возвращает результат, ничего не считая. Иначе она записывает n в кэш, считает «одно вычисление» и, если n >= 2, дополнительно вызывает fib(n - 1), а затем fib(n - 2) (для n равного 0 или 1 других вызовов нет). Работа вызова равна числу вычислений, выполненных во всей цепочке вызовов, которую он запустил.

Кэш общий для всех вызовов из списка calls, сначала он пуст. Вызывайте fib для чисел из calls по порядку и верните список работы каждого вызова. Значения чисел Фибоначчи считать не нужно. Все n от 0 до 30.

Пример: [5, 5, 3, 6] → [6, 0, 0, 1]. Первый вызов считает 0, 1, 2, 3, 4 и 5, второй и третий берут всё из кэша, а fib(6) считает только само 6.


Источник: задача CodeShare

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки