这是我的代码,它从字符串s(abc)生成给定长度(n)中的任何可能的排列:
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 :(得分: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);
<强>输出强>
aa
ab
ac
...
az
ba
bb
...
zy
zz