The key difference between RECURSIVECHANGE and DPCHANGE is that
the first makes d recursive calls to compute the best change for M (and each
of these calls requires a lot of work!), while the second analyzes the d already
precomputed values to almost instantly compute the new one. As surprising
as it may sound, simply reversing the order of computations in figure 6.1
makes a dramatic difference in efficiency (fig. 6.2).