#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool isPalindrome(char *str, int strLen) {
if (strLen <= 1) return true;
if (str[0] == str[strLen - 1]) {
return isPalindrome(str + 1, strLen - 2);
}
return false;
}
bool isPalindromeByStep(char *str, int strLen) {
if (strLen <= 1) return true;
for (int i = 0; i <= strLen / 2; i++) {
if (str[i] != str[strLen - i - 1]) {
return false;
}
}
return true;
}
int main() {
char *examples[] = {"abcdedcba", "aba", "racecar", "hello", "world"};
for (int i = 0; i < sizeof(examples) / sizeof(examples[0]); i++) {
char *p = examples[i];
int strLen = strlen(p);
bool resultRecursive = isPalindrome(p, strLen);
bool resultIterative = isPalindromeByStep(p, strLen);
if (resultRecursive) {
printf("%s is a palindrome (recursive)\n", p);
} else {
printf("%s is not a palindrome (recursive)\n", p);
}
if (resultIterative) {
printf("%s is a palindrome (iterative)\n", p);
} else {
printf("%s is not a palindrome (iterative)\n", p);
}
}
return 0;
}