RosettaCodeData/Task/Fibonacci-sequence/Emacs-Lisp/fibonacci-sequence-2.l

16 lines
353 B
Common Lisp

(defun fibonacci (n)
(let (vec i j k)
(if (< n 2)
n
(setq vec (make-vector (+ n 1) 0)
i 0
j 1
k 2)
(setf (aref vec 1) 1)
(while (<= k n)
(setf (aref vec k) (+ (elt vec i) (elt vec j)))
(setq i (1+ i)
j (1+ j)
k (1+ k)))
(elt vec n))))