(wat-aro)

無職から有職者にランクアップしました

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