2014-01-30 2 views
1

Я пытаюсь рекурсивно изменить строку. Если str1 == "hello", я хочу, чтобы str1 стал "olleh". В моей рекурсивной функции я пытаюсь скопировать первый символ во временную переменную, передать строку рекурсивно и добавить содержимое временной переменной в конец возвращаемой строки. До сих пор это мой код,Рекурсия обратной строки C++

# include <iostream> 
# include <string.h> 
using namespace std; 

string string_reverse(string) ; 

int main() 
{ 
    string str1 = "hello"; 

    cout << string_reverse(str1) << endl; 

    return 0; 
} 

string string_reverse(string str1) 
{ 
    if (str1.length() == 1) 
    { return str1;} 
    else 
     string temp; 
     temp.assign(str1, 0, 1); 
     str1.erase(0, 1); 
     string_reverse(str1); 
     return str1.append(temp); 
} 

Однако я получаю сообщение об ошибке говорящее temp не была объявлена ​​в области.

+4

Если вы используете редактор, автоматически отменяющий ваш код, вы, вероятно, сразу заметили бы проблему. – Barmar

ответ

2

Вам не хватает { и } - без них ваше предложение else это только одна строка string temp;.

Использование редактора, который автоматически пересчитывает ваш код, может помочь вам увидеть такие вещи.

1

Вам нужны фигурные скобки вокруг вашего предложения else.

Смежные вопросы