sicp 1.17

利用加法做乘法,对数计算步数。

 

(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))
 

你可能感兴趣的:(SICP)