sicp/1_17.sch

18 lines
359 B
Scheme

(define (mult-rec a b)
(cond ((= b 0) 0)
((even? b) (mult-rec (double a) (halve b)))
(else (+ a (mult-rec a (- b 1))))))
(define (mult-iter a b n)
(cond ((= b 0) n)
((even? b) (mult-iter (double a) (halve b) n))
(else (mult-iter a (- b 1) (+ a n)))))
(define (mult a b)
(mult-iter a b 0))
(define (double a) (+ a a))
(define (halve a) (/ a 2))