Chương trình C ++ để đảo ngược một câu bằng cách sử dụng đệ quy

Chương trình này lấy một câu từ người dùng và đảo ngược câu đó bằng cách sử dụng đệ quy. Chương trình này không sử dụng chuỗi để đảo ngược câu hoặc lưu trữ câu.

Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình C ++ sau:

  • Các hàm trong C ++
  • Các loại hàm do người dùng định nghĩa trong C ++
  • C ++ đệ quy
  • C ++ if, if… else và Nested if… else

Ví dụ: Đảo ngược một câu bằng cách sử dụng đệ quy.

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

Đầu ra

 Nhập một câu: chương trình tuyệt vời margorp emosewa 

Trong chương trình này, người dùng được yêu cầu nhập một chuỗi được lưu trữ trong đối tượng chuỗi str.

Khi đó, reverse()hàm được gọi là hàm đệ quy.

Bên trong hàm này, chúng tôi lưu trữ kích thước của chuỗi đầu vào trong biến numOfChars.

Trong lệnh gọi hàm đầu tiên, reverse()in ký tự cuối cùng của chuỗi với mã:

 cout << str(numOfChars - 1);

Hãy nhớ rằng chuỗi thực sự là mảng ký tự , vì vậy mỗi ký tự riêng lẻ của chuỗi có thể được biểu diễn dưới dạng một chỉ số của mảng chuỗi str ().

Trong dòng tiếp theo, hàm đệ quy được gọi là:

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

Ở đây, substr()cung cấp cho chuỗi ký tự cuối cùng thứ 2, ký tự này được chuyển lại cho reverse()hàm.

Trong lần reverse()gọi tiếp theo , ký tự cuối cùng thứ 2 được in vì chuỗi chứa ít ký tự hơn ký tự cuối cùng. Sau đó, một ký tự từ cuối cùng được cắt khỏi chuỗi một lần nữa và được chuyển đến reverse()hàm.

Điều này diễn ra cho đến khi độ dài của chuỗi bằng 1, khi ký tự cuối cùng (hoặc ký tự đầu tiên) được in và kết thúc vòng lặp.

thú vị bài viết...