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

avec Java Discussion :

Récursivité en java


Sujet :

avec Java

  1. #1
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut Récursivité en java
    Bonsoir

    est ce qu'on peut appeler une fonction récursivement de la sorte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void Fonc (Object obj)[
    {
        if ()
        {
            fonc(obj1);
        }
    }
    Merci pour votre aidee...

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    le meilleur moyen pour le savoir est de l'essayer !
    Mais la réponse est oui, on peux.

  3. #3
    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 : 35
    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
    Une fonction est récursive à partir du moment où elle s'appelle elle même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void fonc(int i){
    //...
    fonc(unEntier)
    //...
    }

  4. #4
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    oui oui merci beaucoup pour votre aide..
    la j'ai la preuve que l'erreur ne vient pas de la récursivité

    voici mon code:
    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 static void toString (Object obj) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
    		//Class cl= Class.forName((String) obj);
    		Class cl= obj.getClass();
    		Field[] champs= cl.getDeclaredFields();
     
    		for (int i = 0; i < champs.length; i++) {
    			System.out.println("champ numéro: "+i);
    	            if ((champs[i].getClass()).isPrimitive())
    	            {
    	            	System.out.println("champ: "+champs[i]);
    	            }
    	            else{
    	            	System.out.println("La liste des champ objet du champ " + i+" nomé: "+ champs[i]);
    	            	toString(champs[i]); // c ici que ma fonction pose problème
    	            	System.out.println("Fin des champs objets d champs "+ i);
     
    	            }
    	            System.out.println("---------------------------------------------------------");
    	    // fin du for    	
    		}
    				}
     
     
     
    }
    merci de m'aider...

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    c'est bien beau de faire une fonction récursive, mais il faudrait peut etre penser à faire une condition d'arrêt. La tu va descendre jusqu'à choper un Stack overflow.

  6. #6
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    Oui ok mais la il n'afficher meme pas les premiers Fields pourquoi ?

  7. #7
    Membre du Club
    Profil pro
    Coach Agile
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Points : 56
    Points
    56
    Par défaut
    Bonjour,
    Petit point optimisation, déjà au lieu de rappeler 50 fois "champs[i]" utilise une variable local, tu auras un gain de performance assez important.

    Ensuite, es-tu sur de la ligne de code ou cela plante??
    Est-ce que cela ne plante pas sur ta ligne :
    Citation Envoyé par zemzoum89 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ((champs[i].getClass()).isPrimitive())
    (les parenthése sur champs[i].getClass() sont inutile si tu ne fais pas de cast ou autre chose)

    Sinon tous les champs qui ne sont pas de types primitifs sont-ils des objets personnalisés ??
    Y a peut être moyen de surcharger la méthode toString de chaque objet plutôt que de faire appel à une méthode à part.

  8. #8
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    Ah ben ceux qui ne sont pas type primitf sont des objets tout cours peuvent etre personnalisé ou pas

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    il te faut une condition d'arrêt dans ton code, hors tu n'en a aucune, donc tu passe en récursion infinie.

  10. #10
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    ahhhh ok merci beaucoup ca marche très bien merciii

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

Discussions similaires

  1. [JDOM] récursivité java
    Par imenblue dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 01/05/2011, 01h57
  2. le Java est la continuité du C++ ???
    Par Vincent PETIT dans le forum Débats sur le développement - Le Best Of
    Réponses: 33
    Dernier message: 25/08/2005, 20h17
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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