Lógica de Programação

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