Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить задачу по Питону с учётом всего + комментария от одного человека

mr alastor Ученик (54), на голосовании 2 месяца назад
Задача 5. Кэширование для ускорения вычислений

Контекст

Вы разрабатываете программу для оптимизации вычислений чисел Фибоначчи. Числа Фибоначчи вычисляются рекурсивной функцией, каждое число равно сумме двух предыдущих чисел. Однако вы заметили, что при больших значениях чисел Фибоначчи вычисления занимают значительное время, так как многие значения вычисляются повторно. Вам поручено создать декоратор, который кэширует результаты вызова функции и позволяет избежать повторных вычислений для одних и тех же аргументов.

Задача

Создайте декоратор, который кэширует (сохраняет для дальнейшего использования) результаты вызова функции и, при повторном вызове с теми же аргументами, возвращает сохранённый результат.
Примените его к рекурсивной функции вычисления чисел Фибоначчи.
В итоге декоратор должен проверять аргументы, с которыми вызывается функция, и, если такие аргументы уже использовались, должен вернуть сохранённый результат вместо запуска расчёта.

Советы

Для хранения результатов удобно использовать словарь, так как поиск элементов внутри словаря будет иметь сложность, равную в среднем O(1).
При этом не стоит хранить все вычисления в одном словаре, созданном снаружи функций (в глобальной области видимости). Лучше создавать
отдельные словари для каждой декорируемой функции.

Совет от одного человека: В 5-м задании надо кешировать ответы, то есть если мы вызвали для 10-ти рассвет, то в след раз не должен запускаться рассвет, а сразу возвращаться результат из кеша, для этого вам надо будет создать словарь, который будет заполняться в декораторе, и который будет хранить пары значений аргумент-результат_вычисления
Голосование за лучший ответ
Юрий Семыкин Искусственный Интеллект (200800) 3 месяца назад
Совет дан от лица незнакомого с Питоном, конкретно незнакомого с механизмом декораций. См., например
https://education.yandex.ru/handbook/python/article/rekursiya-dekoratory-generatory
Похожие вопросы