/* Affichages par recursivite                  */

public class AffichagesRecursifs {
  
/////////////////////////////////////////////////

/* Fonction d'affichage par ordre decroissant  */
/* des nombres entiers compris entre 0 et n    */
/* n : valeur limite pour l'affichage          */

  static void affichageDecroissant(int n) {
    Ecran.afficherln(n);
    if ( n > 0 )
      affichageDecroissant(n-1);
  }

/* Fonction d'affichage par ordre croissant    */
/* des nombres entiers compris entre v et n    */
/* v : valeur minimale                         */
/* n : valeur limite pour l'affichage          */

  static void affichageCroissant(int v,int n) {
    Ecran.afficherln(v);
    if ( v < n )
      affichageCroissant(v+1,n);
  }

/* Fonction d'affichage par ordre croissant    */
/* des nombres entiers compris entre 0 et n    */
/* n : valeur limite pour l'affichage          */

  static void affichageCroissant(int n) {
    affichageCroissant(0,n);
  }

/* Affichage par ordre croissant               */
/* des nombres entiers compris entre 0 et n    */
/* Solution elegante                           */
/* n : valeur limite pour l'affichage          */

  static void affichageCroissant2(int n) {
    if ( n > 0 )
      affichageCroissant2(n-1);
    Ecran.afficherln(n);
  }

/* Affichage par ordre decroissant             */
/* puis par ordre croissant                    */
/* des nombres entiers compris entre 0 et n    */
/* n : valeur limite pour l'affichage          */

  static void affichageDecroissantCroissant(int n) {
    Ecran.afficherln(n);
    if ( n > 0 )
      affichageDecroissantCroissant(n-1);
    Ecran.afficherln(n);
  }

/* Affichage par ordre croissant               */
/* puis par ordre decroissant                  */
/* des nombres entiers compris entre v et n    */
/* v : valeur minimale                         */
/* n : valeur limite pour l'affichage          */

  static void affichageCroissantDecroissant(int v,int n) {
    Ecran.afficherln(v);
    if ( v < n )
      affichageCroissantDecroissant(v+1,n);
    Ecran.afficherln(v);
  }

/* Affichage par ordre croissant               */
/* puis par ordre decroissant                  */
/* des nombres entiers compris entre 0 et n    */
/* n : valeur limite pour l'affichage          */

  static void affichageCroissantDecroissant(int n) {
    affichageCroissantDecroissant(0,n);
  }

/* Fonction void d'ffichage des chiffres       */
/* d'un nombre entier                          */
/* n : nombre entier à afficher                */

  static void affichage(int n) {
    if ( n >= 10 )
      affichage(n/10);
    Ecran.afficher(n%10);
  }

/////////////////////////////////////////////////
  
/* Programme principal                         */

  public static void main(String [] args) {
    int n;
    Ecran.afficher("Valeur ? ");
    n = Clavier.saisirInt();
    affichageDecroissant(n);
    Ecran.sautDeLigne();
    affichageCroissant(n);
    Ecran.sautDeLigne();
    affichageCroissant2(n);
    Ecran.sautDeLigne();
    affichageDecroissantCroissant(n);
    Ecran.sautDeLigne();
    affichageCroissantDecroissant(n);
    Ecran.sautDeLigne();
    Ecran.afficher("Valeur ? ");
    n = Clavier.saisirInt();
    affichage(n);
    Ecran.sautDeLigne();
  }
}