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 :

problème avec n boucles FOR imbriquées


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut problème avec n boucles FOR imbriquées
    salut à toutes et à tous

    comment faire pour créer un certain nombre de boucles for imbriquées les unes aux autres?

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    n = 3 :
    for (int i = 0 ; i < moi; i++)
         for (int j=0; j<moi; j++)
              for (int k=0; k<moi;k++)
                   instruction;
    mais comment faire si n = 1000?
    bien sur sans se taper les 1000 à écrire.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Quel rapport entre toutes ces boucles ?
    Je ne comprends pas le besoin (ni le problème)... peux-tu expliquer ce que tu cherches à faire ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    si j'ai bien compris ta demande, il faut que tu fasses à priori de la récursivité.
    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public int recursivite(int n) {
            int retour = 0;
            if (n == 0) {
                retour = 1;
            } else {
                for (int i = 0; i < 10; i++)
                    retour += recursivite(n - 1);
            }
            return retour;
     
        }
    un System.out.println(recursivite(3)) te retournera 1000 (10^3) car la boucle lance 10 instructions et tu l'exécutes 3 fois.

  4. #4
    Membre habitué Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Points : 156
    Points
    156
    Par défaut
    1000 niveaux d'imbrication !!! La complexité serait apocalyptique. Pour des listes de 2 éléments 2^1000. En crypto ils ne doivent utiliser qu'une marge à 2^100, alors je pense pas que tu trouves un ordi capable de faire tourner ce code. Quelle est l'utilisation que tu veux en faire derrière ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    euh au hasard une sous fonction

    genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int n = 1000
     
    for (int p=0;p<n;p++){
    boucle(p);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void boucle(int n){
    for (int k=0; k<moi;k++)
    }
    sinon je plussois pour la récursivité

    ++

  6. #6
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Points : 340
    Points
    340
    Par défaut
    Citation Envoyé par LittleBean Voir le message
    euh au hasard une sous fonction

    genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int n = 1000
     
    for (int p=0;p<n;p++){
    boucle(p);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void boucle(int n){
    for (int k=0; k<moi;k++)
    }
    heu là tu n'as toujours que deux boucles imbriquées.

    sinon je plussois pour la récursivité

    ++
    Après quand il dit 1000 niveaux je pense que c'était un exemple Mais de tout façon, tu peux avoir besoin d'un très grand nombre de boucle imbriqué, sans pour autant exploser la complexité. Ca m'était notamment arrivé pour un algo parcours de graphe. Dans l'algo de recherche de l'optimum, j'étais obligé de faire un parcours avec un nombre de boucle imbriqué égale au nombre de sommet si je me souviens bien. Il y'avait après, d'autre mécanisme interne, qui permettait de voir si une boucle était utile ou non.

  7. #7
    Membre habitué Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Points : 156
    Points
    156
    Par défaut
    Le mieux, neopi21, serait que tu nous donne un exemple d'application de ton algo.

  8. #8
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Je ne pense pas qu'il veuille faire 1000 for .
    Ca doit être une application ou l'utilisateur doit entrer un nombre entre 1 et 10 par exemple et cela donne le nombre de boucle à faire...
    Après à savoir dans quoi il veut mettre ça... mystère et boule de gomme
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    heu là tu n'as toujours que deux boucles imbriquées.
    effectivement mais dans son code exemple il n'y a pas d'imbrication ...
    juste une suite de n boucle for

    pour une imbrication de niveau indéterminé, une solution est
    la recursivité .

    Il doit y avoir moyen de gérer cela en faisant appel à la une structure en forme de pile ...

    Je crois d'ailleurs qu'il existe une démo de conversion d'algo de récursif vers pile et vice-versa mais bon je m'éloigne, je m'éloigne ....

  10. #10
    Membre habitué Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Points : 156
    Points
    156
    Par défaut
    Tout algo récursif est convertible en boucle.

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/11/2007, 15h25
  2. Réponses: 3
    Dernier message: 24/05/2007, 17h56
  3. problème avec une boucle For
    Par mademoizel dans le forum ASP
    Réponses: 3
    Dernier message: 24/03/2007, 13h20
  4. Réponses: 2
    Dernier message: 29/08/2006, 13h59
  5. Problème avec une boucle for
    Par cisse18 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/03/2006, 16h50

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