Permutación de una matriz, con repetición, en Java.

Hay algunas preguntas similares en el sitio que han sido de alguna ayuda, pero no puedo resolver este problema, así que espero que esto no sea repetitivo.

Esta es una tarea para el hogar en la que tiene un conjunto de caracteres [A, B, C], y debe usar la recursividad para obtener todas las permutaciones (con repetición). El código que tengo de alguna manera hace esto:

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);    
}

Sin embargo, el parámetro n debe definir la longitud de la salida, por lo que mientras esta función imprime todas las permutaciones de la longitud 3, no puede hacerlas de la longitud 2. He intentado todo lo que puedo imaginar y he estudiado detenidamente los resultados de búsqueda de Google. y me siento agravado conmigo mismo por no poder resolver lo que parece ser un problema bastante simple.

Respuestas a la pregunta(4)

Su respuesta a la pregunta