3. 设计递归算法判断字符串是否为回文。 采用字符型数组存放字符串,设计一个递归算法,判断字符串str是否为回 文。使用c语言
时间: 2024-11-30 20:15:22 浏览: 14
Java实现 LeetCode 680 验证回文字符串 Ⅱ(暴力)
在 C 语言中,我们可以设计一个递归函数来判断一个字符串是否是回文。一个回文字符串是指正读和反读都一样的字符串。下面是一个简单的递归算法实现:
```c
#include <stdio.h>
#include <string.h>
// 定义一个递归函数,用于检查字符串是否回文
int isPalindrome(char str[], int start, int end) {
// 递归基础条件:如果开始位置超过或等于结束位置,说明是回文
if (start >= end)
return 1;
// 如果字符串的第一个字符和最后一个字符不匹配,则不是回文
if (str[start] != str[end])
return 0;
// 否则继续递归,处理剩余部分
return isPalindrome(str, start + 1, end - 1);
}
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin); // 防止fgets读入换行符
str[strcspn(str, "\n")] = '\0'; // 去除换行符
if (isPalindrome(str, 0, strlen(str) - 1))
printf("%s 是回文\n", str);
else
printf("%s 不是回文\n", str);
return 0;
}
```
在这个程序中,`isPalindrome` 函数接受字符串、起始索引和结束索引作为参数。当起始位置大于或等于结束位置时,返回1表示回文;否则,比较第一个字符和最后一个字符,如果不相等则返回0,表示不是回文。然后递归地处理剩下的一对字符,直到整个字符串都被检查。
阅读全文