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ư -
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