Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ đảo ngược câu (chuỗi) bằng đệ quy


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