【发布时间】:2012-10-20 21:27:33
【问题描述】:
网站上有一些类似的问题有所帮助,但我不能完全确定这个问题,所以我希望这不是重复。
这是一个家庭作业,你有一组字符 [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);
}
但是,参数 n 应该定义输出的长度,所以虽然这个函数打印出长度为 3 的所有排列,但它不能执行长度为 2 的排列。我已经尝试了所有我能想到的,并仔细研究了谷歌搜索结果,我为自己无法解决看似相当简单的问题而感到恼火。
【问题讨论】:
-
这里的“有重复”是什么意思?
-
只是表示一个字符一旦使用,就可以再次使用。所以可能输出的数量是 3^3,而不是 3!。
标签: java arrays recursion permutation