16. n=28
1.2
loop-power 27
power
(defun loop-power (x n)
(let ((r 1)) 28 2
(dotimes (i n) 14 2
(setf r (* r x))) 7 x
r)) 6 2
3 x
(defun square (x) (* x x))
2 2
(defun power (x n)
6
(cond ((= n 0) 1)
((evenp n) (square (power x (/ n 2))))
(t (* x (power x (- n 1))))))
20. 1.5
(defun dot-product (a b)
(if (or (null a) (null b))
0
(+ (* (first a) (first b))
(dot-product (rest a) (rest b)))))
(defun dot-product (a b)
(let ((sum 0))
(dotimes (i (length a))
(incf sum (* (elt a i) (elt b i))))
sum))
(defun dot-product (a b)
(apply #'+ (mapcar #'* a b)))