let rec fact1 n =
match n with
0 -> 1
| n -> n * fact2 (n - 1)
and fact2 n =
if n < 2 then 1
else n * fact3 (n - 1)
and fact3 = function
| 0 -> 1
| n -> n * fact1 (n - 1);;
print_int (fact1 5);;
print_string "\n";;
print_int (fact2 5);;
print_string "\n";;
print_int (fact3 5);;