18 lines
359 B
Scheme
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))
|
|
|