(lambda (p q) (if (or (< q 0) (> q p)) 0
   (let C ((x p)(y 1)(z q)(a 1)) (if (zero? z) a
     (C (- x 1)(+ y 1) (- z 1)(/ (* a x) y))))))
