2016-06-12 7 views
-9

これは、文字列s(ABC)から所定の長さ(n)の中の任意の可能な順列を生成し、私のコードです:forループを再帰アルゴリズムに変換するにはどうすればよいですか?

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 ""; 
} 

私の質問は:私は、再帰的なアルゴリズムに私forループを変換することができますか?私はこの宿題の作業でループを使用することはできません。

+0

あなたは、forループを使用する必要があります。 –

+0

本当ではない、方法があります。 – Efi

+0

それでは、それはなんですか? –

答えて

3

iパラメータを使用して実際に行います。

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

それは動作します!ありがとう。 – Efi

関連する問題