<< Previous exercise (3.26)
| Index |
Next exercise (3.28) >>
The (memo-fib) never computes the same result twice. the call tree is a linear list.
If define memo-fib to be (memorize fib), the procedure won't work. because fib calls itself to compute (fib n) before applies memorize.
Instead of recoding fib into memo-fib as shown in SICP (which seems like a very error-prone way of adding memoize to an existing function). The following works in DrRacket using #lang racket
(set! fib (memoize fib))
It sets fib in the global environment to (memoize fib) which also causes the recursive calls within fib to call the redefined version.