Prog Caml : Fonction etapes_syracuses récursive

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.

LIMITES DE TIEMPO Y MEMORIA (Python)

  • Tiempo: 4s sobre una máquina de 1GHz.
  • Memoria: 1,000 Kb.

EJEMPLO

entrada:

7

salida:

16

COMENTARIOS

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())) ;;

Source : https://www.france-ioi.org/ Creado por : Arthur Charguéraud.