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

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))

댓글 없음:
댓글 쓰기