; hofstadter's sequence
(define (hofstadter n)
(let ((k 5))
(let loop ((n (- n 2)) (rs (list 3 1)) (ss (list 4 2)))
(if (zero? n) (reverse rs)
(loop (- n 1)
(cons (+ (car rs) (car ss)) rs)
(let next ((n k))
(cond ((member n rs) (next (+ n 1)))
((member n ss) (next (+ n 1)))
(else (set! k (+ n 1))
(cons n ss)))))))))
(display (hofstadter 25))