Bonjour à tous, j'aurais besoin d'aide sur la compréhension de la compilation d'un petit script java, l'idée est de me retourner le max d'une liste chaînée par récursion.

Comment ( et dans quel ordre) va être compilé ce 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
public int Maximum(Cellule c){
 
		if (c.suivant != null){
 
			int max = Maximum(c.suivant);
			if(max < c.valeur){
				max = c.valeur;
			}
 
			return c.valeur;
		}
		else 
			return c.valeur;
	}
Je ne comprends pas en ce sens :
selon moi, à chaque appel de Maximum() on recommence le code au départ sans passer au if, ce qui fait donc tourner en rond jusqu'à la fin de la liste où au final on retourne c.valeur par défaut.

pour appuyer mon code, voici le code de ma liste chaînée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public class Liste_chaînée {
 
	public Cellule tete;
 
 
	//constructeur
	 Liste_chaînée(){
 
		tete = null;
 
	}
et d'une cellule :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Cellule {
 
	public int valeur;
	public Cellule suivant;
 
	//constructeur
	Cellule(int _valeur){
 
		valeur = _valeur;
		suivant = null;
	}
 
}
je vous remercie d'avance pour votre temps et votre lecture