Computer >> Máy Tính >  >> Lập trình >> lập trình C

C Chương trình kiểm tra xem một mảng có phải là palindrome hay không bằng cách sử dụng Đệ quy

Cho một mảng arr [n] trong đó n là một số kích thước của một mảng, nhiệm vụ là tìm ra mảng đó là palindrome hay không sử dụng đệ quy. Palindrome là một chuỗi có thể được đọc ngược và chuyển tiếp như nhau, như:MADAM, NAMAN, v.v.

Vì vậy, để kiểm tra một mảng có phải là palindrome hay không, chúng ta có thể duyệt qua một mảng từ ngược lại và chuyển tiếp như -

C Chương trình kiểm tra xem một mảng có phải là palindrome hay không bằng cách sử dụng Đệ quy

Trong đệ quy cũng vậy, chúng ta phải thay đổi giá trị bắt đầu và kết thúc cho đến khi chúng bằng nhau hoặc khi các giá trị bắt đầu và kết thúc không bằng nhau thì thoát ra và trả về false rằng mảng đã cho không phải là palindrome.

Ví dụ

Input: arr[] = { 2, 3, 4, 3, 2}
Output: Yes, the array is Palindrome
Explanation: the array is identical from start (2, 3, 4, 3, 2) and end (2, 3, 4, 3, 2).
Input: arr[] = {1, 2, 3, 4}
Output: No, the array is not Palindrome
Explanation: The array is not identical from start (1, 2, 3, 4) and end (4, 3, 2, 1).

Phương pháp tiếp cận được sử dụng bên dưới như sau -

Chúng tôi sẽ thực hiện một cách đệ quy các bước sau -

  • Kiểm tra arr [start] bằng arr [end] và bắt đầu
  • Bắt đầu tăng dần bằng 1 và giảm dần kết thúc bằng 1.
  • Thực hiện bước 1.

Thuật toán

Start
In function int palindrome(int arr[], int start, int end)
   Step 1-> If start >= end then,
      Return 1
   Step 2-> If arr[start] == arr[end] then,
      Return palindrome(arr, start + 1, end - 1)
   Step 3-> Else {
      Return 0
In fucntion int main()
      Step 1-> Declare and initialize an array arr[]
      Step 2-> Declare and initialize n = sizeof(arr) / sizeof(arr[0]
      Step 3-> If palindrome(arr, 0, n - 1) == 1 then,
         Print "Yes, the array is Palindrome”
      Step 4-> Else
         Print "No, the array is not Palindrome”
Stop

Ví dụ

#include <stdio.h>
// Recursive pallindrome function that returns 1 if
// palindrome, 0 if it is not
int palindrome(int arr[], int start, int end) {
   // base case
   if (start >= end) {
      return 1;
   }
   if (arr[start] == arr[end]) {
      return palindrome(arr, start + 1, end - 1);
   } else {
      return 0;
   }
   // Driver code
   int main() {
   int arr[] = { 1, 2, 0, 2, 1 };
   int n = sizeof(arr) / sizeof(arr[0]);
   if (palindrome(arr, 0, n - 1) == 1)
      printf("Yes, the array is Palindrome\n");
   else
      printf("No, the array is not Palindrome\n");
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Yes, the array is Palindrome