ได้รับอาร์เรย์ arr[n] ตรวจสอบว่าเป็น Palindrome หรือไม่ โดยใช้ Recursion
Palindrome คือลำดับที่อ่านจากหน้าหลังเหมือนกัน เช่น MADAM, NAMAN
ตัวอย่าง
Input: arr[] = {2, 3, 4, 3, 2} Output: Yes, the array is Palindrome
Input: arr[] = {1, 2, 3, 4} Output: No, the array is not Palindrome
แนวทาง Recursive
- เปรียบเทียบ arr[start] กับ arr[end] ต้องเท่ากันและ start < end
- เพิ่ม start ลด end แล้วเรียกฟังก์ชันซ้ำ
- Base case: start >= end → return true
- ถ้าไม่เท่ากัน → return false
อัลกอริทึม
Start
ฟังก์ชัน palindrome(arr[], start, end):
if start >= end return 1
if arr[start] == arr[end]
return palindrome(arr, start+1, end-1)
else return 0
main():
arr[] = {1,2,0,2,1}
n = sizeof(arr)/sizeof(arr[0])
if palindrome(arr, 0, n-1) print "Yes" else print "No"
Stop
โค้ดตัวอย่าง
#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) == 1)
printf("Yes, the array is Palindrome\n");
else
printf("No, the array is not Palindrome\n");
return 0;
}
ผลลัพธ์
Yes, the array is Palindrome