Просто эта проблема ... Gitbox был виноват. Возможно, у вас был запуск графического интерфейса, который вызывал проблемы.
void reverse(string &word)
{
string temp = word;
if(temp.length != 0)
{
cout << temp.at(temp.length()-1);
reverse(temp.erase(temp.length()-1));
}
else
cout << "\ndone\n";
}
Это напечатает в обратном порядке и не изменит исходную строку, которая была передана. Если вы хотите изменить исходную строку, просто удалите переменную temp
.
Алгоритм такой:
reverse
для вашей подстроки
void reverse(string& word)
{
size_t len = word.size();
if (len < 2)
{
return;
}
char first = word[0];
char last = word[len - 1];
string inner;
if (len > 2)
{
inner = word.substr(1, len - 2);
reverse(inner);
}
word = last + inner + first;
}
Не рекурсивный способ достижения того же самого может быть: