sicp-solutions/chapter-1/ex-1.17.scm

10 lines
252 B
Scheme

#lang sicp
(define (double x) (* 2 x))
(define (halve x) (/ x 2))
(define (*aux a b acc)
(cond ((= b 0) acc)
((even? b) (*aux (double a) (halve b) acc))
(else (*aux a (- b 1) (+ acc a)))))
(define (fast-mul a b)
(*aux a b 0))