(defun fib-helper (a b p q n) (cond ((zerop n) b) ((oddp n) (let ((aq (times a q))) (fib-helper (plus (times b q) aq (times a p)) (plus (times b p) aq) p q (sub1 n)))) (t (let ((qq (times q q))) (fib-helper a b (plus (times p p) qq) (plus qq (times 2 p q)) (quotient n 2)))))) (defun fib (n) (fib-helper 1 0 0 1 n))