(define (pow x y)
  (let ((z (lambda()(pow x (quotient y 2)))))
     (cond ((zero? y) 1)
        ((zero? (modulo y 2)) (set! z (z)) (* z z))
        (else (set! z (z)) (* x z z)))))