Wednesday, June 3, 2009

Ex-1.18

(define (double x) (* 2 x))
(define (halve x) (/ x 2))
(define (even? n)
(= (remainder n 2) 0))

;to find multiplication of a and b, call
; (mul-iter 0 a b)
(define (mul-iter r a b)
(cond ((= b 0) r)
((even? b)
(mul-iter r (double a) (halve b)))
(else
(mul-iter (+ r a) a (- b 1)))))

No comments:

Post a Comment