Boa noite redr4gon o que você propôs seria válido para trabalhar com números randomicos, mas o que eu preciso é combinar grupos de números pré definidos como dito anteriormente.
Feito assim no joelho:
public class Teste{
public static void main(String args[]) {
String seq = "12345";
int maxLevel = 3;
new Teste().proccess(new StringBuilder(seq), maxLevel);
}
private void proccess(StringBuilder sequencia, int maxLevel) {
for (int i = 0; i < sequencia.length(); i++) {
add(new StringBuilder(), sequencia.charAt(i), removeChar(sequencia, i), 1,maxLevel);
}
}
private void add(StringBuilder seq, char c, StringBuilder remain, int level, int maxLevel) {
StringBuilder newSeq = new StringBuilder(seq.length() + 1);
newSeq.append(seq);
newSeq.append(c);
if (remain.length() == 0 || level == maxLevel) {
System.out.println(newSeq);
} else {
for (int i = 0; i < remain.length(); i++) {
add(newSeq, remain.charAt(i), removeChar(remain, i), level+1, maxLevel);
}
}
}
private StringBuilder removeChar(StringBuilder c, int pos) {
StringBuilder result = new StringBuilder(c.length() - 1);
result.append(c);
result.deleteCharAt(pos);
return result;
}
}
pmlm acho que essa solução ficou massa