IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Question récursivité ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 106
    Par défaut Question récursivité ?
    Bonjour , s'il vous plait j'arrive pas à comprendre le résultat obtenu par la procédure boucleCroissante(),on lui passe une valeur supérieur à 0 cette valeur devient égale à 0 suite au traitement récursif et commence à s'incrémenter encore une fois !!! je crois qu'il y a quelque chose qui m’échappe
    pourquoi cette variable s'incrément-elle ??? et si elle est égale à 0 elle ne satisfait pas la condition à l’intérieur de la procédure donc pas d'affichage ???
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    // BouclesRecursives.java boucles récursives
    class BouclesRecursives {
    static void boucleDecroissante (int n) {
    if (n > 0) {
    System.out.println ("boucleDecroissante valeur de n : " + n);
    boucleDecroissante (n-1);
    }
    }
    static void boucleCroissante (int n) {
    if (n > 0) {
    boucleCroissante (n-1);
    System.out.println ("boucleCroissante valeur de n : " + n);
    }
    }
    public static void main (String[] args) {
    boucleDecroissante (5);
    System.out.println ("\n");
    boucleCroissante (5);
    }
    //Résultat
    //boucleDecroissante valeur de n : 5
    //boucleDecroissante valeur de n : 4
    //boucleDecroissante valeur de n : 3
    //boucleDecroissante valeur de n : 2
    //boucleDecroissante valeur de n : 1
     
     
    //boucleCroissante valeur de n : 1
    //boucleCroissante valeur de n : 2
    //boucleCroissante valeur de n : 3
    //boucleCroissante valeur de n : 4
    //boucleCroissante valeur de n : 5
    Merci

  2. #2
    Membre confirmé Avatar de willom
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Par défaut
    Salut, ils uffit de "dérouler" l'algo pour comprendre ce qui se passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    boucleCroissante(5)
       boucleCroissante(4)
          boucleCroissante(3)
             boucleCroissante(2)
                boucleCroissante(1)
                   boucleCroissante(0) // la condition n'est pas respecté, donc on ne fait rien
                "boucleCroissante valeur de n : 1"
             "boucleCroissante valeur de n : 2"
          "boucleCroissante valeur de n : 3"
       "boucleCroissante valeur de n : 4"
    "boucleCroissante valeur de n : 5"
    L'astuce (si on peut appeler ça comme ça...) est que l'appel récursif se fait avant le println... Essaye de le dérouler par toi même à la main, ça t'aideras à comprendre

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 106
    Par défaut
    Citation Envoyé par willom Voir le message
    Salut, ils uffit de "dérouler" l'algo pour comprendre ce qui se passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    boucleCroissante(5)
       boucleCroissante(4)
          boucleCroissante(3)
             boucleCroissante(2)
                boucleCroissante(1)
                   boucleCroissante(0) // la condition n'est pas respecté, donc on ne fait rien
                "boucleCroissante valeur de n : 1"
             "boucleCroissante valeur de n : 2"
          "boucleCroissante valeur de n : 3"
       "boucleCroissante valeur de n : 4"
    "boucleCroissante valeur de n : 5"
    L'astuce (si on peut appeler ça comme ça...) est que l'appel récursif se fait avant le println... Essaye de le dérouler par toi même à la main, ça t'aideras à comprendre
    salut merci pour ta réponse
    j'ai fais une exécution pas à pas et j'ai déroulé le programme à la main mais j'arrive toujours pas à comprendre comment le n s'incrément t-il ??? après cette étape n= 0 boucleCroissante(0)

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il ne s'incrémente pas. C'est juste que les valeurs de n sont affichées dans l'ordre inverse où elle ont été parcourues, puisque l'affichage est fait après l'appel récursif :

    #1 D'abord : Exécute ma méthode avec n-1
    #2 Ensuite, affiche la valeur de n.

    Donc avant d'afficher la valeur de n, il affiche celle de n - 1, c'est logique.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 106
    Par défaut
    c'est bon j'ai compris maintenant
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur la récursivité
    Par Kopp92i dans le forum Général Python
    Réponses: 8
    Dernier message: 24/11/2013, 23h46
  2. Question récursivité terminale sur JVM
    Par Seb_de_lille dans le forum Scala
    Réponses: 4
    Dernier message: 26/06/2010, 04h52
  3. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo