(define *memo* (make-hash-table)) (define (A k) (if (hash-table-exists? *memo* k) (hash-table-get *memo* k) (let ((val (cond ((= k 0) 4) ((= k 1) 3) (else (/ (- (* 19 (A (- k 1))) (* 12 (A (- k 2)))) 4))))) (hash-table-put! *memo* k val) val))) (let* ((k (read)) (float (number->string (exact->inexact (A k)))) (index (string-scan float #\e)) (answer (if index (substring float 0 index) float))) (display answer) (newline))