(**
* Un petit programme écrit en OCaml (https://OCaml.org), rédigé avec des mots-clés en anglais,
* Il définit une fonction factorielle récursive et exécute un test de test.
*
* Voir
*
* Copyright Lilian Besson, 2021, publié sous la licence MIT
* Voir
*)
(* Include the English one, to compare with it *)
let rec fact (n : int) =
match n with
| n when n < 0 -> failwith "Error: n has to be >= 0 for fact."
| 0 -> 1
| 1 | 2 -> if n=1 then 1 else 2
| n -> n * (fact (n-1))
;;
soit recursif fact2 (n : int) =
faire correspondre n à
| n lorsque n < 0 ->
echoueavec "Erreur: n doit être >= 0 pour fact2."
| 0 -> 1
| 1 | 2 -> si n=1 alors 1 sinon 2
| n -> n * (fact2 (n-1))
;;
soit afficher = Format.printf;;
afficher "Test avec fact2 écrite avec les mots clés en français !\n%!";;
s'assurer que (1 = (fact2 1));;
s'assurer que (2 = (fact2 2));;
s'assurer que (6 = (fact2 3));;
pour n = 6 jusqu'à 10 faire
afficher "fact2(%i) = %i\n%!" n (fact2 n);
fini;;
pour n = 13 descendant jusqu'à 11 faire
début
afficher "fact2(%i) = %i\n%!" n (fact2 n);
s'assurer que ((fact2 n) = (fact n));
fin
fini;;
soit n = ref 3 dans
tant que !n < 6 faire
afficher "fact2(%i) = %i\n%!" !n (fact2 !n);
incr n;
fini;;