Bonjour,
je suis entrain de faire des permutation des elts d'une liste avec une fonction récursive. comme parametre, j'ai un n qui est le nombre d'elt dans l'ensemble, c a d si n =2 on a des ensemble à 2 elts. Exemple : [14, 24], [14, 34],...
n = 3 [14, 24, 34], [14, 24, 54]....
je souhaite construire des ensemble, ainsi sans répetition d'elts dans ces ensemble, c a d ¨[14 24 24]
pour le moment j ai un probleme avec l'appel de ma fonction permutationRec
car je l'appelle avant le return et le resultat n'est pas ainsi envoyé dans le main(), sauf pour la première itération.
Merci
Code:
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 LinkedList<String> permutationRec(ArrayList<String> list, int n){ LinkedList<String> permutation = new LinkedList<String>(); if(list.size() == 0){ permutation.addAll(list); } if(list.size() >= n){ Iterator<String> it = list.iterator(); String elt = ""; for(int i=0; i< n-1; i++){ elt+= it.next(); } while(it.hasNext()) { String prefixe = elt+ it.next(); permutation.add(prefixe); } list.remove(list.get(0)); ????? permutationRec(list, n); System.out.println("list: "+list); } return permutation; }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public static void main(String[] args) { // TODO Auto-generated method stub //String str = "142434"; ArrayList<String> list = new ArrayList<String>(); list.add("14"); list.add("24"); list.add("34"); list.add("54"); LinkedList<String> res = permutationRec(list, 3); Iterator<String> it = res.iterator(); while(it.hasNext()) { System.out.println(it.next()); } }