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 : 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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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());
	        }
	    }