Bonjour a tous,
j'ai un soucis dans ma fonction maximum. Le prof nous a imposé de la faire de façon récursive. Quand je compile, j'ai seulement les deux premiers qui sont bien passé dans ma condition mais je n'arrive pas a accéder à la cellule suivante. J'ai du mal sur les fonctions récursive.Est-ce que quelqu'un pourrait m'aider à y voir plus clair.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 public class Cellule { int valeur; Cellule suivant; Cellule(int pvaleur) { valeur = pvaleur; suivant = null; } } import java.util.Random; public class ListeChainee { Cellule tete; ListeChainee() { tete = null; } public void Afficher() { Cellule c = tete; while (c != null) { System.out.print(c.valeur + " "); c = c.suivant; } } public void Ajouter(int valeur) { Cellule nc = new Cellule(valeur); nc.suivant = tete; tete = nc; } public void Init(int n) { Random rand = new Random(); for (int i = 0; i < n; i++) { this.Ajouter(rand.nextInt(1000)); } } public int Minimum() { int valMin = 10000; Cellule c = tete; while (c != null) { if (c.valeur < valMin) { valMin = c.valeur; } c = c.suivant; } System.out.print(" la valeur minimum est : " + valMin); return valMin; } static int Maximum(Cellule c) { int max = c.valeur; if (c != null) { if (c.valeur < c.suivant.valeur) { max = c.suivant.valeur; max = ListeChainee.Maximum(c.suivant); } } return max; } void Supprimer(int n) { ListeChainee l = new ListeChainee(); Cellule c = tete; while (c != null) { if (c.valeur != n) { l.Ajouter(c.valeur); } c = c.suivant;// on passe à la cellule suivante } System.out.println(" La nouvelle liste est : "); l.Afficher(); } } import java.util.Scanner; public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print(" Début liste chainée : "); ListeChainee l1 = new ListeChainee(); l1.Init(10); l1.Afficher(); l1.Minimum(); Cellule c2=new Cellule (0); c2. suivant=l1.tete; l1.tete = c2; System.out.println(" le chiffre maximum de la liste est : " + ListeChainee.Maximum(c2)); System.out.print(" Deuxième liste chainée : "); ListeChainee l2 = new ListeChainee (); for (int i = 0; i < 10; i++) { l2.Ajouter(i); } l2.Afficher(); l2.Supprimer(2); } }
Partager