足し算と2倍,1/2倍という演算のみの組み合わせで、O(log n)の乗算つくろう!すぐつくろう!
昨日の問題が分かっていればだいじょうぶみたいです。
(define (even? n) (= (remainder n 2) 0)) (define (double x) (+ x x)) (define (halve x) (/ x 2)) (define (* a b) (define (multiple-iter a b ans) (cond ((= b 0) ans) ((even? b) (multiple-iter (double a) (halve b) ans)) (else (multiple-iter a (- b 1) (+ ans a))))) (multiple-iter a b 0) )
とか調子コいてたら、なんか問題のとり方間違ったみたいで、これでは問題1.17に答えていない。
ところで問題1.18をみてみると、なんか問題1.18の回答にはなってるぽいので、まぁよかったなーとか思っているところです。