2016-06-12 7 views
-9

Dies ist mein Code, der in der angegebenen Länge (n) von string s (die abc) jede mögliche Permutation erzeugt:Wie kann ich meine for-Schleife in einen rekursiven Algorithmus umwandeln?

public String binary(int n, String str, int i) { 
    String s = "abcdefghijklmnopqrstuvwxyz"; 
    //i=s.length(); 
    if (n == 0) { 
     System.out.println(str); 
     return str; 
    } 
    if (i == s.length()) { 
     System.out.println(str); 
     return ""; 
    } 

    for (i = 0; i < 26; i++) { 
     binary(n - 1, str + s.charAt(i), i); 
    } 

    return ""; 
} 

Meine Frage ist: Wie kann ich meine for Schleife in einen rekursiven Algorithmus konvertieren? Ich darf keine Schleifen in dieser Hausaufgabe verwenden.

+0

Sie müssen eine for-Schleife verwenden. –

+0

Nicht wahr, es gibt einen Weg. – Efi

+0

Ok, was ist das? –

Antwort

3

Sie tun es tatsächlich mit die i Parameter.

private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz"; 
public static void binary(int n, String str, int i) { 
    if (i == ALPHABET.length()) 
     return; 
    if (n == 0) { 
     System.out.println(str); 
     return; 
    } 
    binary(n - 1, str + ALPHABET.charAt(i), 0); // next letter starts at beginning of alphabet 
    binary(n, str, i + 1); // do it again using next letter of alphabet 
} 

TEST

binary(2, "", 0); 

OUTPUT

aa 
ab 
ac 
... 
az 
ba 
bb 
... 
zy 
zz 
+0

Es funktioniert! Vielen Dank. – Efi

Verwandte Themen