(5am:test exercise-1.17
(5am:is (= 0 (multi 1 0)))
(5am:is (= 6 (multi 2 3)))
(5am:is (= (multi 4 5)
(multi 5 4))))
(defun double (x)
(* x 2))
(defun halve (x)
(/ x 2))
(defun multi (a b)
(cond ((zerop b) 0)
((evenp b) (double (multi a (halve b))))
(t (+ a (multi a (1- b))))))
1.16のノリでうっかり反復的アルゴリズムにしてしまったが、1.18の問題文を見て無かったことにした。fast-exptは再帰的アルゴリズム。
返信削除