:编写一个测试一个串是否为回文的递归函数,是回文,函数返回1;不是回文,返回0。并且在主函数中调用该函数,判断输入的字符串是否为回文串。 回文是正读和反读都一样的串,例如:“abcba” 和“otto”就是回文。主函数中若输入的字符串是回文,则输出“Yes”,否则输出“No”。
时间: 2024-05-03 16:18:44 浏览: 113
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str, int left, int right) {
if (left >= right) { // 递归终止条件
return 1;
}
if (str[left] == str[right]) {
return isPalindrome(str, left + 1, right - 1); // 递归调用
}
return 0;
}
int main() {
char str[100];
printf("请输入一个字符串:\n");
scanf("%s", str);
int len = strlen(str);
int ans = isPalindrome(str, 0, len - 1);
if (ans == 1) {
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
```
这里使用了递归函数isPalindrome来判断字符串是否为回文。isPalindrome的参数列表中包含了一个指向字符串的指针str,以及两个整型变量left和right,用于标记当前判断的子串的左右边界。在每次递归时,判断当前子串的左右两个字符是否相等,如果相等则继续递归调用判断更短的子串是否为回文;否则说明当前字符串不是回文,直接返回0。
在主函数中,首先读入一个字符串,然后使用isPalindrome函数判断该字符串是否为回文,最后根据函数的返回值输出"Yes"或"No"。
阅读全文