(** Problème CENTRALE '97 **) (* Calcul de a(n) *) let a n = 1./.(float_of_int ((n+1)*(n+2)));; (* Calcul de gn(0) *) let g n = let rec calc result = function |0 -> (a 0)/.(1.+.result) |n -> calc ((a n)/.(1.+.result)) (n-1) in calc 0. n;; (* Approximation de r0 *) let calcul eps = let p=ref 1. and compteur=ref 0 in while (!p >= 2.*.eps) do incr compteur; p:=!p*.(a !compteur) done; print_int !compteur; print_string " itération(s) précision : ";print_float !p; print_newline(); g !compteur ;;