2010-10-21

問題1.17

(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 件のコメント:

  1. 1.16のノリでうっかり反復的アルゴリズムにしてしまったが、1.18の問題文を見て無かったことにした。fast-exptは再帰的アルゴリズム。

    返信削除