Permutacja tablicy z powtarzaniem w Javie

Na stronie znajdują się podobne pytania, które pomogły, ale nie mogę rozwiązać tego problemu, więc mam nadzieję, że nie jest to powtarzalne.

Jest to zadanie domowe, w którym masz ustawioną tablicę znaków [A, B, C] i musisz użyć rekursji, aby uzyskać wszystkie permutacje (z powtarzaniem). Kod, który mam, robi to:

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

Jednak parametr n powinien określać długość wyjścia, więc podczas gdy ta funkcja wypisuje wszystkie permutacje o długości 3, nie może ich wykonać o długości 2. Próbowałem wszystkiego, o czym mogę pomyśleć, i przeglądałem wyniki wyszukiwania Google, a ja sam jestem zła za to, że nie jestem w stanie rozwiązać tego, co wydaje się być raczej prostym problemem.

questionAnswers(4)

yourAnswerToTheQuestion