(define (even? n) (= (remainder n 2) 0)) (define (square x) (* x x)) ; compute b^n for positive integer n (define (expt b n) ; b^n = a*c^i (define (iter a c i) (cond ((= i 0) a) ; b^n = ac^i = a (c^2)^(i/2) ((even? i) (iter a (square c) (/ i 2))) ; b^n = ac^i = (ac)c^(i - 1) (else (iter (* a c) c (- i 1))))) (iter 1 b n))