Chuỗi là một mảng ký tự một chiều được kết thúc bằng ký tự null. Ngược lại của một chuỗi là chuỗi giống nhau theo thứ tự ngược lại. Ví dụ.
Original String: Apple is red Reversed String: der si elppA
Một chương trình đảo ngược một câu dưới dạng một chuỗi sử dụng đệ quy được đưa ra như sau.
Ví dụ
#include <iostream> using namespace std; void reverse(char *str) { if(*str == '\0') return; else { reverse(str+1); cout<<*str; } } int main() { char str[] = "C++ is fun"; cout<<"Original String: "<<str<<endl; cout<<"Reversed String: "; reverse(str); return 0; }
Đầu ra
Original String: C++ is fun Reversed String: nuf si ++C
Trong chương trình trên, hàm reverse () là một hàm đệ quy đảo ngược một chuỗi.
Ban đầu reverse () chấp nhận * str là một con trỏ trỏ đến đầu chuỗi. Nếu giá trị là null, thì hàm trả về. Nếu không, thì hàm gọi đệ quy chính nó với giá trị str + 1, tức là phần tử tiếp theo trong chuỗi. Cuối cùng, khi str là null, các giá trị của str được in từ trước trở lại. Vì vậy, chuỗi đảo ngược được in. Điều này được hiển thị bằng đoạn mã sau.
if(*str == '\0') return; else { reverse(str+1); cout<<*str; }
Trong hàm main (), chuỗi được khởi tạo. Ngoài ra, chuỗi gốc và chuỗi đảo ngược được hiển thị. Điều này được hiển thị như sau -
char str[] = "C++ is fun"; cout<<"Original String: "<<str<<endl; cout<<"Reversed String: "; reverse(str);