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