(define (even? n) (= (remainder n 2) 0)) (define (double x) (+ x x)) (define (halve x) (/ x 2)) ; multiply a by positive integer b (define (mult a b) ; a*b = x*y + z (define (iter x y z) ; ab = xy + z = x*0 = z (cond ((= y 0) z) ; ab = xy + z = (2x)(y/2) + z ((even? y) (iter (double x) (halve y) z)) ; ab = xy + z = x(y - 1) + z + x (else (iter x (- y 1) (+ z x))))) (iter a b 0))