SICP ex 1.16 再び
再び書いてみたら、以前書いたものと違っていた。
(define (fast-expt b n) (define (fast-expt-iter a b n) (cond ((= n 0) a) ((even? n) (fast-expt-iter a (square b) (/ n 2))) (else (fast-expt-iter (* a b) b (- n 1))))) (fast-expt-iter 1 b n)) (define (square x) (* x x)) (define (even? n) (= (remainder n 2) 0))
これが、正しくてすっきりした答え。