Gibt alle Permutationen eines Strings in C aus

Ich lerne Backtracking und Rekursion und bin an einem Algorithmus zum Drucken aller Permutationen eines Strings fest. Ich habe es mit dem gelöstGlockenalgorithmus für die Permutation kann ich aber die Rekursionsmethode nicht verstehen. Ich habe im Internet gesucht und folgenden Code gefunden:

void permute(char *a, int i, int n) 
{
   int j; 
   if (i == n)
     printf("%s\n", a);
   else
   {
        for (j = i; j <= n; j++)
       {
          swap((a+i), (a+j));
          permute(a, i+1, n);
          swap((a+i), (a+j)); 
       }
   }
} 

Wie funktioniert dieser Algorithmus, den ich nicht verstehen kann? Ich habe es sogar mit Trockenlauf versucht!

Wie wird das Backtracking angewendet?

Und ist es effizienter als der Bell-Algorithmus zur Berechnung der Permutation?

Antworten auf die Frage(9)

Ihre Antwort auf die Frage