利用加法做乘法,对数计算步数。
(define (* a b)
(cond ((= b 0) 0)
((even? b) (* (double a) (halve b)))
(else (+ a (* a (- b 1))))))
(define (double x)
(+ x x))
(define (halve x)
(define (halve-iter a x)
(if (= x (double a))
a
(halve-iter (+ a 1) x)))
(halve-iter 0 x))