static void RecursivePermute(string str, int k) { int i; if (k == StringLength(str)) { printf("%s\n", str); } else { for (i = k; i < StringLength(str); i++) { ExchangeCharacters(str, k, i); RecursivePermute(str, k+1); ExchangeCharacters(str, k, i); } } } static void ExchangeCharacters(string str, int p1, int p2) { char temp; tmp = str[p1]; str[p1] = str[p2]; str[p2] = tmp; }