Ecrivez la fonction récursive etapes_syracuses
qui retourne le nombre d'étapes nécessaire pour arriver à 1 à partir du paramètre n
. L'idée est simple. Si n
vaut 1, il n'y a aucune étape à faire, et on retourne 0. Sinon, on renvoie le nombre d'étapes nécessaires pour arriver à 1 à partir de etapes_Syracuses n
, augmenté de 1.
entrée :
7
sortie :
16
Code à compléter Caml
let read_int() = Scanf.scanf " %d" (fun x -> x);; let syracuse p = if p mod 2 = 0 then p / 2 else 3 * p + 1 ;; let rec etapes_syracuses n = (*à compléter*) in print_int ( etapes_syracuses (read_int())) ;;