Loops and Recursion in OCaml