C ++ programma, lai mainītu teikumu, izmantojot rekursiju

Šī programma paņem no lietotāja teikumu un maina šo teikumu, izmantojot rekursiju. Šī programma neizmanto virkni, lai teikumu mainītu vai teikumu glabātu.

Lai saprastu šo piemēru, jums jāzina par šādām C ++ programmēšanas tēmām:

  • C ++ funkcijas
  • Lietotāja definēto funkciju veidi C ++
  • C ++ rekursija
  • C ++, ja, ja … cits, un Nested, ja … cits

Piemērs: Apvērsiet teikumu, izmantojot rekursiju.

 #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)); ) ) 

Rezultāts

 Ievadiet teikumu: lieliska programma margorp emosewa 

Šajā programmā lietotājam tiek lūgts ievadīt virkni, kas tiek saglabāta virknes objektā str.

Tad reverse()tiek saukta funkcija, kas ir rekursīva funkcija.

Šīs funkcijas iekšpusē mēs saglabājam ievades virknes lielumu mainīgajā numOfChars.

Pirmajā funkcijas izsaukumā reverse()izdrukā virknes pēdējo rakstzīmi ar kodu:

 cout << str(numOfChars - 1);

Atcerieties, ka virknes faktiski ir rakstzīmju masīvi , tāpēc katru atsevišķu virknes rakstzīmi var attēlot kā virknes masīva str () indeksu.

Nākamajā rindā rekursīvo funkciju sauc:

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

Šeit substr()virkne tiek piešķirta līdz otrajai pēdējai rakstzīmei, kas atkal tiek nodota reverse()funkcijai.

Nākamajā reverse()zvanā tiek izdrukāta 2. pēdējā rakstzīme, jo virknē ir par vienu rakstzīmi mazāk no pēdējās. Pēc tam vienu rakstzīmi no pēdējās atkal nogriež no virknes un nodod reverse()funkcijai.

Tas notiek, līdz virknes garums ir vienāds ar 1, kad tiek izdrukāts pēdējais raksturs (vai pirmais simbols) un cilpa beidzas.

Interesanti raksti...