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

Java Discussion :

De l'itératif au récursif


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut De l'itératif au récursif
    Bonjour, je voudrais savoir comment je peux transformer ce programme itératif en un programme récursif. Je vous remercie d'avance
    Code : 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
     
    public int chercheEntierConsecutif_v2(int nb) {
            int x0 = -1;
            if (nb > 0 && nb <= tab.length) {
                int i = 0;
                while (x0 < 0 && i <= (tab.length - nb)) {
                    if (compteOccurrences(i) >= nb) {
                        x0 = tab[i];
                    }
                    i++;
                }
     
            }
            return x0;
        }
     
        public int compteOccurrences(int i) {
            boolean b = true;
            int c = 0;
            int x = tab[i];
            while (b && i < tab.length) {
                b = (tab[i] == x);
                if (b) {
                    c++;
                    i++;
                }
            }
            return c;
        }

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    En remplaçant la boucle par l'appel de la même fonction.

    A+.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Je vous remercie de votre réponse, mais ça je le savais déjà, le problème c'est que j'arrive pas à le faire sur ce bout de code. Vous auriez pas une proposition ? Merci

  4. #4
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Salut,

    que doit faire ta méthode exactement ?
    F*ck it ! Do it !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Voici ma méthode en un seul code, elle doit trouver un entier qui apparait dans nb cases consécutives d'un tableau.
    Code : 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
     
    public int chercheEntierConsecutif(int nb) {
            int x0 = -1;
            if (nb > 0 && nb <= tab.length) {
                int i = 0;
                while (x0 < 0 && i <= (tab.length - nb)) {
                    int x = tab[i];
                    int c = 1;
                    boolean b = true;
                    i++;
                    while (b && i < tab.length && c < nb) {
                        b = (tab[i] == x);
                        if (b) {
                            c++;
                            i++;
                        }
                    }
                    if (c >= nb) {
                        x0 = x;
                    }
                }
     
            }
            return x0;
        }

  6. #6
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Salut,

    voici le code en récursif pour trouver le nombre d’occurrences maximum consécutives d'un élément nb dans un tableau tab :

    Code : 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
    public int chercheMaxOccur(Integer[] tab, int i, int maxOccur, int nb) {
            if (i >= tab.length) {
                return maxOccur;
            } else {
                int count = 0;
                while (i < tab.length && tab[i] == nb) {
                    count++;
                    if (count > maxOccur) {
                        maxOccur = count;
                    }
                    i++;
                }
                i++;
            }
            return chercheMaxOccur(tab, i, maxOccur, nb);
        }
    J'ai fait ça vite fait, y'a surement moyen d'améliorer.


    Toutgrego
    F*ck it ! Do it !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup, ça va vraiment m'aider à avancer, juste une question, normalement il doit y avoir aucune boucle dans une méthode récursive, est ce que je me trompe ?

  8. #8
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Salut,

    si tu peux très bien en avoir mais il faut savoir que toute boucle est 'transformable' en une fonction récursive terminale.
    Ici c'est un peu plus galère parce qu'on a besoin du tableau, de i et de maxOccur mais c'est tout à fait faisable.
    Pour t’entraîner à la récursivité tu peux t'amuser à transformer des boucles simple en méthode récursive.

    Pense à mettre au début de ta méthode la condition d'arrêt puis dans le corps la condition de récursivité. Tu dois obligatoirement avoir un variant (comme dans une boucle).


    Tchao!
    F*ck it ! Do it !

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Je vous remercie pour cette explication. Bonne journée

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

Discussions similaires

  1. XML/XSL parcours itératif et récursif
    Par greIn dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 07/11/2012, 00h04
  2. Règles de passage de l'itératif au récursif
    Par HASALGO dans le forum Langage
    Réponses: 14
    Dernier message: 20/02/2010, 09h12
  3. algorithme récursif et itératif
    Par amateurc dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 14/11/2009, 01h02
  4. transformer un code itératif en récursif
    Par FstDsi dans le forum Débuter
    Réponses: 28
    Dernier message: 17/10/2009, 10h32
  5. transformer de l'itératif en récursif
    Par hiina dans le forum C
    Réponses: 8
    Dernier message: 27/11/2005, 21h16

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