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