Ц ++ програм за поништавање реченице помоћу рекурзије

Овај програм узима реченицу од корисника и обрће је реченицом помоћу рекурзије. Овај програм не користи стринг за преокретање реченице или чување реченице.

Да бисте разумели овај пример, требало би да имате знање о следећим темама програмирања на Ц ++:

  • Ц ++ функције
  • Типови кориснички дефинисаних функција у Ц ++
  • Ц ++ Рекурзија
  • Ц ++ иф, иф … елсе и угнеждени иф … елсе

Пример: Обрни реченицу помоћу рекурзије.

 #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, када се одштампа коначни знак (или први знак) и заврши петља.

Занимљиви Чланци...