Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Java - Alternativa za vnořené cykly?

Dobrý den,

Potřeboval bych poradit, jak nahradit vnořené cykly. Řekněme, že budu mít příklad níže.

var array = new char[]{'a', 'b', 'c', 'd'};
var list = getVariation(array, 4);

public static ArrayList<String> getVariation(char characters[], int number_of_characters) {
        
    var length = characters.length;
    var list = new ArrayList<String>();

    switch (number_of_characters) {
        case 2 -> {
            for (var i = 0; i < length; i += 1) {
                for (var j = 0; j < length; j += 1) {
                    list.add(characters[i] + "" + characters[j]);
                }
            }
        }
        case 3 -> {
            for (var i = 0; i < length; i += 1) {
                for (var j = 0; j < length; j += 1) {
                    for (var k = 0; k < length; k += 1) {
                        list.add(characters[i] + "" + characters[j] + "" + characters[k]);
                    }
               }
           }
        }
        case 4 -> {
            for (var i = 0; i < length; i += 1) {
                for (var j = 0; j < length; j += 1) {
                    for (var k = 0; k < length; k += 1) {
                        for (var l = 0; l < length; l += 1) {
                            list.add(characters[i] + "" + characters[j] + "" + characters[k] + "" + characters[l]);
                        }
                    }
                }
            }
        }
    return list;
}

Tento kód je už z principu nepřehledný, protože musí pro každé číslo to napsat zvlášť, jsou omezená pouze na 2,3,4 a z hlediska optimalizace je to taky děs.

Dají se, prosím Vás, nějak vnořené cykly nahradit něčím jiným? Už jenom proto, abych tam mohl zadat libovolné číslo a ne pouze 2,3,4.

Děkuji

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny