Овај програм узима реченицу од корисника и обрће је реченицом помоћу рекурзије. Овај програм не користи стринг за преокретање реченице или чување реченице.
Да бисте разумели овај пример, требало би да имате знање о следећим темама програмирања на Ц ++:
- Ц ++ функције
- Типови кориснички дефинисаних функција у Ц ++
- Ц ++ Рекурзија
- Ц ++ иф, иф … елсе и угнеждени иф … елсе
Пример: Обрни реченицу помоћу рекурзије.
#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)); ) )
Оутпут
Унесите реченицу: маргорп емосева авесоме програм
У овом програму од корисника се тражи да унесе низ који је ускладиштен у објекту низа стр.
Затим reverse()
се позива функција која је рекурзивна.
Унутар ове функције, величину улазног низа чувамо у променљивој нумОфЦхарс.
У првом позиву функције reverse()
исписује последњи знак низа са кодом:
cout << str(numOfChars - 1);
Запамтите да су низови заправо низови знакова , тако да се сваки појединачни знак низа може представити као индекс низа низа стр ().
У следећем реду, рекурзивна функција се назива:
reverse(str.substr(0, numOfChars - 1));
Овде substr()
даје низ до 2. последњег знака, који се поново прослеђује reverse()
функцији.
У следећем reverse()
позиву исписује се 2. последњи знак јер низ садржи један знак мање од последњег. После овога, један знак из последњег је поново одсечен из низа и прослеђен reverse()
функцији.
То траје све док дужина низа не буде једнака 1, када се одштампа коначни знак (или први знак) и заврши петља.