(wat-aro)

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

SICP 問題1.16

反復的べき上プロセスを生成する手続き

(define (fast-expt b n)
  (fast-expt-iter b n 1))

(define (fast-expt-iter b count product)
  (cond ((= count 0) product)
        ((even? count)
         (fast-expt-iter (square b)
                        (/ count 2)
                        product))
        (else (fast-expt-iter b (- count 1) (* b product)))))