Envoyé par
bosskay
1 2 3 4 5 6 7 8 9 10 11 12 13
| let fac a =
let r = ref 0 in
let x=ref 1 in
if a=0 then
r:=!x;
if a<0 then
print_string("nombre négatif refusé");
if a>0 then
(for i=1 to a do
x:=!x*i
done;
r:=!x);
!r;; |
Je ne vais pas changer ton code mais simplement une ou deux petites remarques :
Tu écris
1 2 3
| if a = 0 then ...;
if a < 0 then ...;
if a > 0 then ...; |
Tu pourrais remplacer ça par
1 2 3 4 5 6 7
| if a = 0 then r := !x
else if a < 0 then raise Exit (* Exit est une exception standard *)
else (* là on est sûr que a > 0)
(for i=1 to a do
x:=!x*i
done;
r:=!x); |
C'est bien mieux.
Sinon, tu peux aussi définir tes propres exceptions comme ça :
exception Division_par_zero
et tu l'appelles avec
Cordialement
Partager