sicp/1_16.sch

12 lines
211 B
Scheme

(define (expt1 b n)
(expt-iter b n 1))
(define (expt-iter b n a)
(cond ((= n 0) a)
((odd? n)
(expt-iter b (- n 1) (* a b)))
(else (expt-iter (square b) (/ n 2) a))))
(define (square x) (* x x))