fork download
  1. (define (memoize f)
  2. (let ((table (make-hash-table)))
  3. (lambda (x)
  4. (let ((previously-computed-result (hash-ref table x #f)))
  5. (or previously-computed-result
  6. (let ((result (f x)))
  7. (hash-set! table x result)
  8. result))))))
  9.  
  10. (define fib
  11. (memoize (lambda (n)
  12. (cond ((= n 1) 1)
  13. ((= n 2) 1)
  14. (else (+ (fib (- n 1))
  15. (fib (- n 2))))))))
  16.  
  17.  
  18. (display (fib 1))
  19. (newline)
  20. (display (fib 2))
  21. (newline)
  22. (display (fib 3))
  23. (newline)
  24. (display (fib 4))
  25. (newline)
  26. (display (fib 5))
  27. (newline)
  28. (display (fib 100))
Success #stdin #stdout 0.02s 8164KB
stdin
Standard input is empty
stdout
1
1
2
3
5
354224848179261915075