(* simple_factorial.ml * * Author: W. M. Farmer * Revised: December 1, 2009 * Description: Three simple implementations of the factorial function. * *) let rec fact_rec n = if n = 0 then 1 else (fact_rec (n - 1)) * n ;; let fact_tail_rec n = let rec fact_tail_rec_aux n accum = if n = 0 then accum else fact_tail_rec_aux (n - 1) (accum * n) in fact_tail_rec_aux n 1 ;; let fact_iter n = let n' = ref n in let accum = ref 1 in while !n' <> 0 do accum := !accum * !n' ; n' := !n' - 1 done ; !accum ;;