2008. 3. 4.

연습문제 1.18

a*b를 구할때
b가 짝수인 경우는 2*a와 b/2 를 곱으로 치환한다.
b가 홀수인 경우 a+a*(b-1)을 구하면 된다.


(define (halve x) (/ x 2))
(define (double x) (* x 2))

(define (mul a b)
  (define (iter value count answer)
    (if (= count 0)
        answer
        (cond ((even? count) (iter (double value)
                                   (halve count)
                                   answer))
              (else (iter value (- count 1) (+ answer value))))))
  (iter a b 0))


댓글 없음:

댓글 쓰기