Динамическое программирование. Основы (Перевод с английского)

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