Bonjour,
J'utilise une fonction récursive qui qui construit les nombres à 4 chiffres donc par exemple 1213, 1214,..
et je vais rappeler ces nombres de 4 chiffres pour en ajouter 2 autres chiffres, et là j'aurai mes nombres de 6 chiffres. 121314,....
pour éviter les doublons j'utilise les Set<String>.
voir le code ci dessous
Dans mon code j'ai comme paramètre la List
n = nombre de chiffre dans un nombre ici = 2
p = nombre de nombre à 2chiffres ici 3
dans code je fais ceci:
1 2 3 4 5
| int lon = list.get(0).length();
if(lon == n*p){
monSet.addAll(list);
return monSet;
} |
sous entendu que lorsque lon = 6, je dois sortir car je possède déja mes nombres de 6 chiffres. qui se trouve être la condition de sortie.
Sinon j'appelle
????Set<String> sub = combinerRec(list,combiner, n, p);
Mon souci est le suivant pourquoi, le code ne traverse pas cette ligne,
Merci de me donner les explications nécessaire surtout les raisons, qui font que l' appel de combinerRec(), ne marche pas
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 Set<String> combinerRec(LinkedList<String> list,Set<String>combiner, int n , int p){
Set<String> monSet = new HashSet<String>();
int lon = list.get(0).length();
if(lon == n*p){
monSet.addAll(list);
return monSet;
}
else{
????Set<String> sub = combinerRec(list,combiner, n, p);
Iterator<String> it1 = list.iterator();
Iterator<String> it2 = sub.iterator();
while(it1.hasNext()){
String elt = it1.next();
while(it2.hasNext()){
String comb = it2.next();
String temp = elt + comb;
monSet.add(temp);
}
}
}
return combiner;
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public static void main(String[] args) {int p = 2;
int n = 3;
LinkedList<String> list = new LinkedList<String>();
Set<String> combiner = new HashSet<String>();
list.add("14");
list.add("24");
list.add("34");
list.add("54");
Set<String> resp = combinerRec( list,combiner, n , p);
Iterator<String> ita = resp.iterator();
while(ita.hasNext()) {
System.out.println(ita.next());
}
} |
Partager