我有一个递归ABC生成器方法。
public static void ABCgenerator(String from, int letters) {
if (from.length() == letters) {
System.out.println(from);
} else {
ABCgenerator(from + "a", letters);
ABCgenerator(from + "b", letters);
ABCgenerator(from + "c", letters);
}
}
当我使用这些参数ABCgenerator("a", 3);
运行它时,它会给我:
aaa
aab
aac
aba
abb
abc
aca
acb
acc
相反,我想在运行ABCgenerator("a", 3);
时获得以下信息:
aaaa
aaab
aaac
aaba
aabb
aabc
aaca
aacb
aacc
abaa
abab
abac
abba
abbb
abbc
abca
abcb
abcc
acaa
acab
acac
acba
acbb
acbc
acca
accb
accc
要注意的是,只允许我更改方法的主体。
输入参数的类型和数量必须保持不变,即1个字符串+ 1个整数。
该方法必须保持递归。
我该怎么做?
编辑:
使用ABCgenerator("", 3);
它必须给出:
aaa
aab
aac
aba
abb
abc
aca
acb
acc
baa
bab
bac
bba
bbb
bbc
bca
bcb
bcc
caa
cab
cac
cba
cbb
cbc
cca
ccb
ccc
答案 0 :(得分:0)
public static void ABCgenerator(String from, int lettersLeft) {
lettersLeft--;
if (lettersLeft + 1 == 0) {
System.out.println(from);
} else {
ABCgenerator(from + "a", lettersLeft);
ABCgenerator(from + "b", lettersLeft);
ABCgenerator(from + "c", lettersLeft);
}
}
}
这是正确的解决方案。我们不是在每次计算输入字符串的整个长度,而是在计算该函数仍然需要生成多少个字母,当该函数达到零时,“最后一个”实例将不会调用其他实例而只打印结果。我想要一种能够生成具有给定长度和固定前缀的字母a b c的所有组合的方法,它就是这样。它提供了示例中提供的所需输出。