Програма C ++ для відміни речення за допомогою рекурсії

Ця програма бере речення від користувача і відміняє це речення за допомогою рекурсії. Ця програма не використовує рядок для звороту речення або збереження речення.

Щоб зрозуміти цей приклад, ви повинні знати наступні теми програмування на C ++:

  • Функції C ++
  • Типи користувацьких функцій у C ++
  • Рекурсія С ++
  • C ++ if, if … else та вкладений if … else

Приклад: Змінити речення за допомогою рекурсії.

 #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()видається рядок до 2-го останнього символу, який знову передається reverse()функції.

У наступному reverse()дзвінку друкується другий останній символ, оскільки рядок містить один символ менше від останнього. Після цього один символ останнього знову відсікається від рядка і передається reverse()функції.

Це триває до тих пір, поки довжина рядка не дорівнює 1, коли друкується кінцевий символ (або перший символ) і цикл закінчується.

Цікаві статті...