Chuỗi là mảng ký tự một chiều kết thúc bằng ký tự null. Chuỗi đảo ngược là chuỗi cùng nội dung nhưng thứ tự ngược lại. Ví dụ:
Chuỗi gốc: Apple is red Chuỗi đảo: der si elppA
Chương trình đảo ngược câu dạng chuỗi bằng đệ quy:
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 << "Chuỗi gốc: " << str << endl;
cout << "Chuỗi đảo ngược: ";
reverse(str);
return 0;
}
Kết quả đầu ra
Chuỗi gốc: C++ is fun Chuỗi đảo ngược: nuf si ++C
Trong chương trình, hàm reverse() là hàm đệ quy đảo ngược chuỗi.
Ban đầu reverse() nhận *str là con trỏ trỏ đến đầu chuỗi. Nếu giá trị là null, hàm trả về. Nếu không, hàm gọi đệ quy chính nó với str+1 (phần tử tiếp theo). Cuối cùng khi str là null, các giá trị in từ cuối về đầu. Do đó chuỗi đảo ngược được in:
if (*str == '\0')
return;
else {
reverse(str + 1);
cout << *str;
}
Trong main(), chuỗi được khởi tạo. Hiển thị chuỗi gốc và chuỗi đảo:
char str[] = "C++ is fun"; cout << "Chuỗi gốc: " << str << endl; cout << "Chuỗi đảo ngược: "; reverse(str);