Cho mảng arr[n], kiểm tra xem có phải mảng đối xứng (palindrome) hay không bằng đệ quy.
Mảng đối xứng: đọc từ đầu đến cuối và từ cuối về đầu giống nhau. Ví dụ: {2,3,4,3,2}.
Ví dụ
Input: {2,3,4,3,2} → Output: Yes, mảng đối xứng
Input: {1,2,3,4} → Output: No, không đối xứng
Phương pháp đệ quy:
- So sánh
arr[start]vàarr[end]. - Nếu bằng nhau: gọi đệ quy với
start+1, end-1. - Nếu
start >= end: trả về true. - Nếu khác nhau: trả về false.
Mã nguồn C
#include <stdio.h>
int palindrome(int arr[], int start, int end) {
if (start >= end) return 1;
if (arr[start] == arr[end])
return palindrome(arr, start + 1, end - 1);
else
return 0;
}
int main() {
int arr[] = {1, 2, 0, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
if (palindrome(arr, 0, n - 1))
printf("Mảng là đối xứng (Palindrome)\n");
else
printf("Mảng không đối xứng\n");
return 0;
}
Kết quả
Mảng là đối xứng (Palindrome)