编辑代码

#include <stdio.h>
#include <string.h>

// 递归实现回文判断
int isPalindromeRecursive(char str[], int start, int end) {
    // 当start和end相遇,则说明已经判断结束
    if (start >= end) {
        return 1;
    }
    // 如果首尾字符不相等,则不是回文
    if (str[start] != str[end]) {
        return 0;
    }
    // 继续判断下一个字符
    return isPalindromeRecursive(str, start + 1, end - 1);
}

// 递推实现回文判断
int isPalindromeIterative(char str[]) {
    int start = 0;
    int end = strlen(str) - 1;
    while (start < end) {
        // 如果首尾字符不相等,则不是回文
        if (str[start] != str[end]) {
            return 0;
        }
        start++;
        end--;
    }
    return 1;
}

int main() {
    char str[100];
    printf("输入一个字符串:");
    scanf("%s", str);
    if (isPalindromeRecursive(str, 0, strlen(str) - 1)) {
        printf("递归实现 - 是回文\n");
    } else {
        printf("递归实现 - 不是回文\n");
    }
    if (isPalindromeIterative(str)) {
        printf("递推实现 - 是回文\n");
    } else {
        printf("递推实现 - 不是回文\n");
    }
    return 0;
}