(*
* $Id: nestedloop.ocaml,v 1.7 2001/06/27 11:37:53 doug Exp $
* http://www.bagley.org/~doug/shootout/
* based on code from Florian Hars and Markus Mottl
*)
let _ =
let n =
try int_of_string Sys.argv.(1)
with Invalid_argument _ -> 1 in
let rec loopF x = function 0 -> x | i -> loopF (x+1) (i-1) in
let rec loopE x = function 0 -> x | i -> loopE (loopF x n) (i-1) in
let rec loopD x = function 0 -> x | i -> loopD (loopE x n) (i-1) in
let rec loopC x = function 0 -> x | i -> loopC (loopD x n) (i-1) in
let rec loopB x = function 0 -> x | i -> loopB (loopC x n) (i-1) in
let rec loopA x = function 0 -> x | i -> loopA (loopB x n) (i-1) in
Printf.printf "%d\n" (loopA 0 n)