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