1.2.4 べき乗 - 計算機プログラムの構造と解釈 第二版
問題1.16, 1.17の結果を使い, 加算, 二倍, 二分による, 対数的ステップ数の, 二つの整数の乗算の反復的プロセスを生成する手続きを工夫せよ.
あれ、こっちで対数的ステップ数の反復的プロセスを書くのか。
前回の問題の時にこれ書いちゃった。前回で1.17と1.18両方答えてたみたい。
再掲。
(define (fast-multi a n)
(fast-multi-iter a n 0))
(define (fast-multi-iter a n x)
(cond ((= n 0) x)
((even? n) (fast-multi-iter (double a) (halve n) x))
(else (fast-multi-iter a (- n 1) (+ x a)))))
解答例みたけど合ってた。よかった!