Erreur java.lang.StackOverflowError

Fermé
sophiem - 12 avril 2011 à 00:24
Bonjour,

Je dois ecrire un programme de generation d'arbres d'opérations avec tous les arbres possibles en donnant un nombre d'opérations au départ. J'utilise donc une récursivité mais j'ai une erreur que je n'arrive pas a résoudre.

Voici d'abord mon bout de programme qui donne lieu à une erreur :

public Arbre construire1(Arbre A, Object e, int g, int i){

int j = i+1;

Curseur c = A.curseurRacine();

Object e1 = null;
Object e2 = null;

int n = (int) (Math.random()*5);

if (n == 0)
e1 = "+";
else if (n == 1)
e1 = "-";
else if (n == 2)
e1 = "*";
else if (n == 3)
e1 = "/";
else if (n == 4)
e1 = g;

int m = (int) (Math.random()*5);

if (m == 0)
e2 = "+";
else if (m == 1)
e2 = "-";
else if (m == 2)
e2 = "*";
else if (m == 3)
e2 = "/";
else if (m == 4)
e2 = g;


if (e != null && !e.equals(g) && c != null && j <= 3){
Arbre.getInstance().ajouterFilsGauche(e1,c);
Arbre.getInstance().ajouterFilsDroit(e2,c);
}
else if (e != null && !e.equals(g) && c != null && j > 3){
Arbre.getInstance().ajouterFilsGauche(g,c);
Arbre.getInstance().ajouterFilsDroit(g,c);
}

return A = new Arbre(construire1(A.filsGauche(), Arbre.getInstance().element(A.filsGauche().curseurRacine()), g, j), e, construire1(A.filsDroit(), Arbre.getInstance().element(A.filsDroit().curseurRacine()), g, j));

}


Et voici l'erreur que j'obtiens :
Exception in thread "main" java.lang.StackOverflowError
at java.util.Random.nextDouble(Random.java:380)
at java.lang.Math.random(Math.java:694)
at Constructeur.construire1(Constructeur.java:32)
at Constructeur.construire1(Constructeur.java:68)
at Constructeur.construire1(Constructeur.java:68)
at Constructeur.construire1(Constructeur.java:68)
at Constructeur.construire1(Constructeur.java:68)
at Constructeur.construire1(Constructeur.java:68)
at Constructeur.construire1(Constructeur.java:68)
at Constructeur.construire1(Constructeur.java:68)
....

Pouvez vous me dire ce qui ne vas pas, cela m'aiderait beaucoup !!

Merci d'avance