#lang racket
(define (expt3 b n)
  (cond ((= n 0) 1)
        ((even? n) (square (expt3 b (/ n 2))))
        (else (* b (expt3 b (- n 1))))))

(define (square x) (* x x))

(define (even? n)
  (= (remainder n 2) 0))
