C语言写一个递归函数判断字符串s是否为回文串
时间: 2024-10-13 17:18:21 浏览: 4
在C语言中,你可以通过递归的方式来编写一个函数检查一个字符串是否是回文串。回文串是指正读反读都一样的字符串。下面是一个简单的递归函数示例:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isPalindrome(char s[], int start, int end) {
// 基线条件:当start等于end时,说明已经检查了整个字符串,它是回文的
if (start >= end)
return true;
// 检查第一个字符和最后一个字符是否相等,如果不同则不是回文
if (s[start] != s[end])
return false;
// 如果首尾字符相等,继续递归检查中间部分
return isPalindrome(s, start + 1, end - 1);
}
int main() {
char str[] = "abcba";
if (isPalindrome(str, 0, strlen(str) - 1))
printf("%s is a palindrome.\n", str);
else
printf("%s is not a palindrome.\n", str);
return 0;
}
```
在这个`isPalindrome`函数中,我们传入起始位置`start`和结束位置`end`作为参数,每次递归都会检查这两个位置的字符是否相同,并将范围缩小到剩余部分。如果整个过程中所有字符都匹配,则返回`true`,表示是回文;反之则返回`false`。