Originariamente inviato da cobraa
Sto cercando di modificare il codice in modo tale che non venga modificato set2...
cmq grazie 1000 ...se avete altre idee.....
Potresti utilizzare un'indice, quindi aggiungendo un parametro al metodo:
codice:
private static Set<Set<Integer>> sottoinsiemi(Set<Integer> s, int i){
if( i == s.size() ){
Set<Set<Integer>> res = new HashSet<Set<Integer>>();
res.add( new HashSet<Integer>() );
return res;
}
Integer e = s.toArray(new Integer[0])[i];
Set<Set<Integer>> res = sottoinsiemi(s, i + 1);
Set<Set<Integer>> tmp = new HashSet<Set<Integer>>();
for( Iterator<Set<Integer>> resIt = res.iterator(); resIt.hasNext(); ){
Set<Integer> newSet = new HashSet<Integer>();
newSet.addAll( resIt.next() );
newSet.add( e );
tmp.add(newSet);
}
res.addAll(tmp);
return res;
}
Spero ti sia utile.