Функция 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)))))
Оценка времени и памяти - линейная: