Prog Caml : Fonction affiche_syracuse en récursif

On va réécrire dans cette partie les fonctions d'étude de la suite de Syracuse en récursif.

Écrire une fonction récursive nommée affiche_syracuse prennant en paramètre un entier n. La fonction affiche d'abord la valeur de n, suivie d'un espace. Ensuite, si n est différent de 1, la fonction s'appelle récursivement avec le paramètre (syracuse n) de manière à afficher les termes suivants de la suite. Lorsque n vaut 1, on s'arrête.

Limites de temps et de mémoire (Python)

  • Temps : 4 s sur une machine à 1 GHz.
  • Mémoire : 1 000 ko.

Exemple

entrée :

7

sortie :

7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

Commentaires

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 affiche_syracuse n =
(*à compléter*)
;;

affiche_syracuse (read_int());;

print_newline();

Source : https://www.france-ioi.org/ Créé par : Arthur Charguéraud.