public class Test {
private static Object[] o = {"0","1","2","3","4"};
private static int l = o.length;
public static void rek(int tiefe) {
if (tiefe > l) {
return;
} else if (tiefe == l) {
ausgabe();
}
// aktuelles Feld so lassen wie es ist und weitere Felder bearbeiten
rek(tiefe+1);
for (int i=tiefe+1; i<l; i++) {
// aktuelles Feld mit einem der hinteren vertauschen
tausche(tiefe,i);
rek(tiefe+1);
// danach zurücktauschen
tausche(tiefe,i);
}
}
private static void tausche(int i, int j) {
Object swap = o[i];
o[i] = o[j];
o[j] = swap;
}
private static void ausgabe() {
for (int i=0; i<l; i++) {
System.out.print(o[i]);
}
System.out.println();
}
public static void main(String[] args) {
rek(0);
}
}