Перестановка массива с повторением в Java
На сайте есть несколько похожих вопросов, которые мне помогли, но я не могу точно решить эту проблему, поэтому надеюсь, что это не повторяется.
Это домашнее задание, в котором у вас есть набор символов [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. Я перепробовал все, что мог придумать, и изучил результаты поиска Google, и я раздражен тем, что не смог решить то, что кажется довольно простой проблемой.