Dynamic programming is a family of algorithms used to solve optimisation problems. Except in this case it isn't. We use the term dynamic programming to encompass the dynamic features of Scheme -- the ability to evaluate code at runtime and related features.