Функция fib-rec помимо значения fib(n) возвращает второе значение:
fib(n-1). Пользователь, вызывающий функцию fib-rec,
может ничего не знать об этом втором значении.
(defun fib-rec (n)
  ;; Values: 1) fib(n)
  ;;         2) fib(n-1)
  (cond ((= n 0) 0)
	((= n 1) (values 1 0))
	(t (multiple-value-bind (v1 v2) (fib-rec (1- n))
             (values (+ v1 v2) v1)))))
Оценка времени и памяти - линейная: