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 algorithme récursif


Sujet :

Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut problème algorithme récursif
    Bonjour à tous, j'ai un problème ac un algorithme récursif.
    malgré le fait que je le réduise à sa plus simple expression, j'ai toujours une erreur du type "stackOverflow error"

    voici le code


    static void conversion(int i){

    if ( i != 0)

    { conversion(i--) }

    }



    qqun pourrait il me dire quel est le problème?? j'ai pourtant réalisé des algorithmes récursfifs de recherche dichotomique, je n'ai jamais eu ce problème! merci d'avance

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    ça dépend de ton i de départ, à mon avis tu dois lancer ta procédure sur un nombre négatif

    pour tester si c'est ça, fait un
    au lieu de

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    j'ai déjà essayé mais celà ne change rien. Merci qd mm pr ton aide =)

  4. #4
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    sinon c'est que ton i de départ est trop grand, essaie d'allouer plus de mémoire à l'exécution pour voir

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    càd que ça fonctionne lorsque i vaut 0.
    à partir de 1 ça ne fonctionne plus. C'est quand meme frustrant c qqch de basique je ne comprends pas

  6. #6
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut Re: problème algorithme récursif
    Citation Envoyé par seb888
    static void conversion(int i){

    if ( i != 0)

    { conversion(i--) }

    }
    bonsoir,

    dans ton cas, il s'agit d'une récursion terminale, qui se transforme en boucle aisément.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    tout à fait d'accord. Je ne peux malheureusement pas modifier la question lors de mon examen si on me demande de resoudre le probleme en utilisant la récursivité

  8. #8
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    je suis aussi bien d'accord sinon j'ai remplacé i-- par i-1 et ça a l'air de marcher

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    en effet! celà fonctionne correctement avec i-1 ...

    eh bien un tout grand merci pour votre aide en tout cas!!

  10. #10
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    merci à toi aussi parce que là du coup ça me résout le problème que j'avais dans un de mes programmes et j'avais pas du tout pensé à ça... ( )

    n'oublie pas résolu

  11. #11
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Salut,

    Pour info:

    n'est pas un appel récursif...
    En effet, la valeur du paramètre passé n'est pas i-1, mais i, la décrémentation se faisant après le passage de paramètre. C'est pourquoi pas mal de cours précisent bien la différence entre --i (on décrémente, puis on utilise la valeur) et i-- (on utilise la valeur, puis on décrémente).

    Pour illustrer ceci:

    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
     
    public class recur {
     
    	public static void main(String[] args) {
    		System.out.println("Conversion avec i--");
    		conversion1(10,0);
    		System.out.println("Conversion avec --i");
    		conversion2(10,0);
    	}
     
    	static void conversion1(int i,int compt){
    		if ( i != 0)
    			{ 
    			System.out.println("i="+i+", compt="+compt); 
    			if (compt<10) conversion1(i--,compt+1);
    			 }
    	}
     
    	static void conversion2(int i,int compt){
    		if ( i != 0)
    			{ 
    			System.out.println("i="+i+", compt="+compt); 
    			if (compt<10) conversion2(--i,compt+1);
    			 }
    	}
    }

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    merci pour ces précisions elles me sont fort utiles! je n'avais pas connaissance de l'existence des instructions --i

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

Discussions similaires

  1. définition algorithme récursif et problème d'optimisation
    Par logo98 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 10/06/2009, 16h07
  2. Problème algorithme de comptage
    Par alex4444 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 02/02/2008, 10h08
  3. Algorithme récursif de calcul de moyenne
    Par kromartien dans le forum Mathématiques
    Réponses: 25
    Dernier message: 23/10/2007, 11h05
  4. [SQL] Tree : algorithme récursif
    Par Fabouney dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/08/2007, 15h39
  5. [Tableaux] Problème algo récursif
    Par Invité dans le forum Langage
    Réponses: 38
    Dernier message: 03/10/2006, 15h49

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