(define (f n)
(define v (make-vector (+ 2 n)))
(vector-set! v 0 4)
(vector-set! v 1 (/ 17 4))
(let loop ((i 2))
(if (<= i n)
(let ((v1 (vector-ref v (- i 1))) (v2 (vector-ref v (- i 2))))
(vector-set! v i (+ (- 108 (/ 815 v1)) (/ 1500 (* v1 v2))))
(loop (+ 1 i)))))
(vector-ref v n))
(define (p e)
(print (list e (exact->inexact e))))
(p (f 0))
(p (f 1))
(p (f 2))
(p (f 3))
(p (f 80))
#|
(4 4.0)
(17/4 4.25)
(76/17 4.47058823529412)
(353/76 4.64473684210526)
(206795153138256918939565417139009598365577843034794672964/41359030627651383817474849310671104336332210648235594113 5.0)
|#
KGRlZmluZSAoZiBuKQogIChkZWZpbmUgdiAobWFrZS12ZWN0b3IgKCsgMiBuKSkpCiAgKHZlY3Rvci1zZXQhIHYgMCA0KQogICh2ZWN0b3Itc2V0ISB2IDEgKC8gMTcgNCkpCiAgKGxldCBsb29wICgoaSAyKSkKICAgIChpZiAoPD0gaSBuKQogICAgICAgIChsZXQgKCh2MSAodmVjdG9yLXJlZiB2ICgtIGkgMSkpKSAodjIgKHZlY3Rvci1yZWYgdiAoLSBpIDIpKSkpCiAgICAgICAgICAodmVjdG9yLXNldCEgdiBpICgrICgtIDEwOCAoLyA4MTUgdjEpKSAoLyAxNTAwICgqIHYxIHYyKSkpKQogICAgICAgICAgKGxvb3AgKCsgMSBpKSkpKSkKICAodmVjdG9yLXJlZiB2IG4pKQooZGVmaW5lIChwIGUpCiAgKHByaW50IChsaXN0IGUgKGV4YWN0LT5pbmV4YWN0IGUpKSkpCihwIChmIDApKQoocCAoZiAxKSkKKHAgKGYgMikpCihwIChmIDMpKQoocCAoZiA4MCkpCgojfAooNCA0LjApCigxNy80IDQuMjUpCig3Ni8xNyA0LjQ3MDU4ODIzNTI5NDEyKQooMzUzLzc2IDQuNjQ0NzM2ODQyMTA1MjYpCigyMDY3OTUxNTMxMzgyNTY5MTg5Mzk1NjU0MTcxMzkwMDk1OTgzNjU1Nzc4NDMwMzQ3OTQ2NzI5NjQvNDEzNTkwMzA2Mjc2NTEzODM4MTc0NzQ4NDkzMTA2NzExMDQzMzYzMzIyMTA2NDgyMzU1OTQxMTMgNS4wKQp8Iw==