Πρόγραμμα 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 

Σε αυτό το πρόγραμμα, ζητείται από τον χρήστη να εισαγάγει μια συμβολοσειρά που είναι αποθηκευμένη στο string αντικείμενο str.

Στη συνέχεια, reverse()καλείται η συνάρτηση που είναι μια αναδρομική συνάρτηση.

Μέσα σε αυτήν τη συνάρτηση, αποθηκεύουμε το μέγεθος της συμβολοσειράς εισόδου στη μεταβλητή numOfChars.

Στην πρώτη κλήση λειτουργίας, reverse()εκτυπώνει τον τελευταίο χαρακτήρα της συμβολοσειράς με τον κωδικό:

 cout << str(numOfChars - 1);

Να θυμάστε ότι οι συμβολοσειρές είναι στην πραγματικότητα συστοιχίες χαρακτήρων , επομένως κάθε μεμονωμένος χαρακτήρας μιας συμβολοσειράς μπορεί να αναπαρασταθεί ως ευρετήριο της σειράς συμβολοσειρών str ().

Στην επόμενη γραμμή, η αναδρομική συνάρτηση ονομάζεται:

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

Εδώ, substr()δίνει τη συμβολοσειρά μέχρι τον 2ο τελευταίο χαρακτήρα, ο οποίος μεταφέρεται ξανά στη reverse()συνάρτηση.

Στην επόμενη reverse()κλήση, ο 2ος τελευταίος χαρακτήρας εκτυπώνεται επειδή η συμβολοσειρά περιέχει έναν λιγότερο χαρακτήρα από τον τελευταίο. Μετά από αυτό, ένας χαρακτήρας από τον τελευταίο κόβεται ξανά από τη συμβολοσειρά και μεταβιβάζεται στη reverse()συνάρτηση.

Αυτό συνεχίζεται έως ότου το μήκος της συμβολοσειράς ισούται με 1, όταν εκτυπωθεί ο τελικός χαρακτήρας (ή ο πρώτος χαρακτήρας) και τελειώσει ο βρόχος.

ενδιαφέροντα άρθρα...