在网站上有一些类似的问题已经有所帮助,但我不能完全解决这个问题,所以我希望这不是重复的.
这是一个家庭作业,你有一组字符[A,B,C],并且必须使用递归来获得所有的排列(重复).我有的代码是这样做的:
char[] c = {'A', 'B' , 'C'};
public void printAll(char[] c, int n, int k) {
if (k == n) {
System.out.print(c);
return;
}
else {
for (int j = 0; j<n; j++) {
for (int m = 0; m<n; m++) {
System.out.print(c[k]);
System.out.print(c[j]);
System.out.print(c[m] + "\r\n");
}
}
}
printAll(c, n, k+1);
}
Run Code Online (Sandbox Code Playgroud)
但是,参数n应该定义输出的长度,所以虽然这个函数打印出长度为3的所有排列,但它不能用长度为2的那些.我已经尝试了我能想到的一切,并且仔细研究了谷歌的搜索结果,而且我因为无法解决看似简单的问题而感到恶心.