Програма C ++ за обръщане на изречение с помощта на рекурсия

Тази програма взема изречение от потребителя и обръща това изречение, използвайки рекурсия. Тази програма не използва низ за обръщане на изречението или съхраняване на изречението.

За да разберете този пример, трябва да имате познанията по следните теми за програмиране на C ++:

  • C ++ функции
  • Видове дефинирани от потребителя функции в C ++
  • C ++ рекурсия
  • C ++ ако, ако … друго и вложено ако … друго

Пример: Обърнете изречение, като използвате рекурсия.

 #include using namespace std; // function prototype void reverse(const string& a); int main() ( string str; cout << " Please enter a string " << endl; getline(cin, str); // function call reverse(str); return 0; ) // function definition void reverse(const string& str) ( // store the size of the string size_t numOfChars = str.size(); if(numOfChars == 1) ( cout << str << endl; ) else ( cout << str(numOfChars - 1); // function recursion reverse(str.substr(0, numOfChars - 1)); ) ) 

Изход

 Въведете изречение: страхотна програма margorp emosewa 

В тази програма потребителят е помолен да въведе низ, който се съхранява в обекта на низ str.

След това reverse()се извиква функцията, която е рекурсивна функция.

Вътре в тази функция съхраняваме размера на входния низ в променливата numOfChars.

При първото извикване на функция reverse()отпечатва последния символ на низа с кода:

 cout << str(numOfChars - 1);

Не забравяйте, че низовете всъщност са символни масиви , така че всеки отделен символ на низ може да бъде представен като индекс на масива от низове str ().

В следващия ред се извиква рекурсивната функция:

 reverse(str.substr(0, numOfChars - 1));

Тук substr()дава низа до втория последен знак, който се предава отново на reverse()функцията.

При следващото reverse()повикване се отпечатва вторият последен знак, тъй като низът съдържа един по-малко знак от последния. След това един символ от последния отново се отрязва от низа и се предава на reverse()функцията.

Това важи, докато дължината на низа е равна на 1, когато крайният знак (или първият символ) се отпечатва и цикълът завършва.

Интересни статии...