Je commence à apprendre le code Ocaml, dans cet exercice il est nécessaire de compter le nombre d'opérations que chaque fonction pasA et pasB fera, puis j'essaye de placer un compteur à l'intérieur de chaque fonction, donc je trouve quelques problèmes pour le faire correctement , et le code donne encore quelques problèmes, et c'est pourquoi je voudrais obtenir de l'aide, merci d'avance.
let i= ref 0
let incr()=
i:=!i+1;;
let rec pasA n =
if n=0 then 0 else pasA (n-1) ;
incr();;
and pasB n =
if n=0 then 0
else if (n mod 2)=0 then pasA (n-2)
else pasA (n-1) ;
incr() ;;
Pouah, mais pourquoi on te fait faire de l'impératif (utilisation de références) en Caml, je vois pas l'intérêt...
Bref.
Le problème, c'est que l'appel (récursif) à pasA renvoie le résultat, donc on ne peut pas appeler incr après. Il faut incrémenter i avant :
let i = ref 0;;
let incr() =
i := !i+1
;;
let rec pasA n =
if n = 0 then 0
else begin
incr();
pasA (n-1)
end
;;
let pasB n =
if n = 0 then 0
else begin
incr();
if n mod 2 = 0 then pasA (n-2)
else pasA (n-1)
end
;;
Bonjour , je te remercie pour ta réponse elle a été bien utile .
Ocaml
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon portfolio photo : https://www.instagram.com/charlievanaret_photo/