18 lines
364 B
Plaintext
18 lines
364 B
Plaintext
(defun fast-fib-r (n a b)
|
|
(if (or (zp n) (zp (1- n)))
|
|
b
|
|
(fast-fib-r (1- n) b (+ a b))))
|
|
|
|
(defun fast-fib (n)
|
|
(fast-fib-r n 1 1))
|
|
|
|
(defun first-fibs-r (n i)
|
|
(declare (xargs :measure (nfix (- n i))))
|
|
(if (zp (- n i))
|
|
nil
|
|
(cons (fast-fib i)
|
|
(first-fibs-r n (1+ i)))))
|
|
|
|
(defun first-fibs (n)
|
|
(first-fibs-r n 0))
|