2 days ago

my attempt to do the exercises in sicp.

## Thursday, June 26, 2008

### sicp exercise 1.18

; Exercise 1.18. Using the results of exercises 1.16 and 1.17, devise a procedure that generates an iterative

; process for multiplying two integers in terms of adding, doubling, and halving and uses a logarithmic

; number of steps.

(define (double a) (+ a a))

(define (halve a) (/ a 2))

(define (fast-mul-iter a b result)

(cond ((= b 0) result)

((even? b) (fast-mul-iter (double a) (halve b) result ))

(else (fast-mul-iter a (- b 1) (+ a result)))))

(display (fast-mul-iter 10 9 0)) (newline)

(display (fast-mul-iter 99999 99999 0)) (newline)

(display (fast-mul-iter 9999999999999999999999999 9999999999999999999999999 0)) (newline)

Subscribe to:
Post Comments (Atom)

## No comments:

Post a Comment