(* Examen du groupe C2, sous-groupe 2, le mardi 13 mai 2003 *) (* Exercice 1 *) let rec n_premier_mult_7 n = match n with 0 -> [] |n -> (n_premier_mult_7 (n-1))@[n*7];; (* Exercice 2 *) let rec longueur l = match l with [] -> 0 |t::r -> 1 + (longueur r);; let test_longueur l l1 l2=let long=longueur l and long1=longueur l1 and long2=longueur l2 in long=long1 & long=long2;; let rec somme_3_listes l l1 l2 = match (l,l1,l2) with ([],[],[]) -> [] |(t::r,t1::r1,t2::r2) -> (t+t1+t2)::(somme_3_listes r r1 r2);; let somme l l1 l2= if (test_longueur l l1 l2) then somme_3_listes l l1 l2 else failwith "Les trois listes n'ont pas la même longueur!";; (* Exercice 3 *) let rec fact n = match n with 0 -> 1 |n -> n* fact (n-1);; let rec puissance_x_de_n x n = match (x,n) with (0.,0) -> failwith "Erreur 0^0 non défini!" |(_,0) -> 1. |(x,n) -> x*.(puissance_x_de_n x (n-1));; let exponentielle_div_fact n x = (puissance_x_de_n x n) /. (float_of_int (fact n));; let rec exponentielle n x = match n with 0 -> 1. |n -> (exponentielle_div_fact n x) +. exponentielle (n-1) x;;