рекурсия — переполнение стека в рекурсивном калькуляторе анаграммы

Я пытаюсь создать программу, которая по заданному слову может рассчитывать и распечатывать каждую комбинацию букв.
Чтобы быть более конкретным, меня просят использовать рекурсивную функцию, и я должен получить что-то вроде этого:

Заданное слово: ГЛАВНАЯ

EHOM

EMOH

MEHO

Подход, который я использую для замены содержимого #x на # x + 1, вот так

Строка [0] -> строка [1]

Строка [0] -> строка [2]

Это то, что я придумал

void anagram(char * s, int len, int y)
{
char temp; //used to store the content to swap betwen the two

if (len < 0) //when the total lenght of the array gets to 0 it means that every single swap has been made
return;

temp = s[len]; //swapping
s[len] = s[y];
s[y] = temp;

puts(s); //prints the string

if (y == 0)
return anagram(s, len-1, y - 1);

return anagram(s, len, y - 1);

}

То, что я получаю, это просто огромный беспорядок и точка останова от VS (если не крах).

Может кто-нибудь помочь мне, пожалуйста?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …