Exercise 1.17

Posted on Saturday, September 22nd, 2007

(define (halve x) (/ x 2))

(define (double x) (+ x x))

(define (even? x)
  (= (remainder x 2) 0))

(define (* a b)
  (write b)
  (cond ((= b 0) 0)
        ((even? b) (double (* a (halve b))))
        (else (+ a (* a (- b 1))))))
Categorized as SICP Chapter 1, SICP Exercises