Ex1.2 Powerを定義

PAIPのAnswerではexprを使っていたけど、powerの間違いかな。
ここは、O(n)の解答で。負の数にも対応したけど、小数を指定されると無限ループになる。

;;; Exercise 1.2 [m] Write a function to exponentiate, or raise a number to an integer
;;; power. For example: (power 3 2) => 3^2 => 9
(defun power (m n)
  (cond
    ((= n 0) 1)
    ((< n 0) (* (/ 1 m) (power m (1+ n))))
    ((> n 0) (* m (power m (1- n))))))

(power 3 2)
;; => 9 (#x9, #o11, #b1001)
(power 3 -2)
;; => 1/9