SICP 問題1.18
対数的ステップ数の,二つの整数の乗算の反復的プロセスを生成する手続き
(define (fast-* a b) (fast-*-iter a b 0)) (define (fast-*-iter a b sum) (cond ((= b 0) sum) ((even? b) (fast-*-iter (double a) (halve b) sum)) (else (fast-*-iter a (- b 1) (+ a sum)))))
対数的ステップ数の,二つの整数の乗算の反復的プロセスを生成する手続き
(define (fast-* a b) (fast-*-iter a b 0)) (define (fast-*-iter a b sum) (cond ((= b 0) sum) ((even? b) (fast-*-iter (double a) (halve b) sum)) (else (fast-*-iter a (- b 1) (+ a sum)))))