(defparameter *memo* (make-hash-table))

(defun f (n)
  (let ((m (gethash n *memo*)))
    (if m
        m
        (setf (gethash n *memo*)
              (cond ((= n 0) 4)
                    ((= n 1) 17/4)
                    (t (+ (- 108 (/ 815 (f (- n 1))))
                          (/ 1500 (* (f (- n 1)) (f (- n 2)))))))))))

(let ((a (f 3)))
  (format t "~A~%" a)
  (format t "~,10F~%" a)
  ;; stackoverflow.com/a/3321167
  (multiple-value-bind (q r) (truncate a)
    (format t "~D.~10,'0,D~%" q (truncate (* (abs r) (expt 10 10))))))
