C语言用递归判断回文串
时间: 2024-10-10 12:10:25 浏览: 64
在C语言中,递归可以用来优雅地判断一个字符串是否是回文串,即正读和反读都一样的字符串。下面是一个简单的递归函数示例:
```c
#include <stdbool.h>
#include <string.h>
bool isPalindrome(char str[], int start, int end) {
// 基线条件:如果start和end相等或者相遇,那么它是回文串
if (start >= end)
return true;
// 检查字符串的第一个字符和最后一个字符是否相同
if (str[start] != str[end])
return false;
// 如果第一个字符相同,递归检查剩余部分(去掉首尾字符)
return isPalindrome(str, start + 1, end - 1);
}
// 主程序入口点
int main() {
char str[] = "madam";
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` 并继续递归检查子序列。
阅读全文