;;; (hyp r d) hypersphere
;;;  computes the volume of an d dimensional sphere
;;;  with radius r. for odd dimensions d.
;;;  factorial & exponent procedures taken from SICP.
;;;  joed

(define (factorial n)
  (define (iter product counter)
     (if (> counter n)
          product
          (iter (* counter product)
                (+ counter 1))))
(iter 1 1))

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

(define (expt b n)
   (cond ((= n 0) 1)
         ((even? n) (square (expt b (/ n 2))))
         (else (* b (expt b (- n 1))))))

(define pi 3.14159)

(define (hyp2 r d)
  (/ (* (expt pi (/(- d 1) 2)) (factorial (/(+ d 1) 2)) (expt 2 (+ d 1)) (expt r d))
     (factorial (+ d 1))))