RosettaCodeData/Task/Evaluate-binomial-coefficients/OCaml/evaluate-binomial-coefficients-2.ocaml
Ingy döt Net d066446780 langs a-z
2013-04-10 22:43:41 -07:00

11 lines
231 B
Text

#load "nums.cma";;
open Num;;
let binomial n p =
let m = min p (n - p) in
if m < 0 then Int 0 else
let rec a j v =
if j = m then v
else a (succ j) ((v */ (Int (n - j))) // (Int (succ j)))
in a 0 (Int 1)
;;