C语言判断回文字符串

有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。输入:字符串输出:Yes或者No说明:如输出Yes,说明输入的字符串是一个回... 有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。
输入: 字符串
输出: Yes或者No
说明: 如输出Yes,说明输入的字符串是一个回文字符串 输出No,说明输入的字符串不是一个回文字符串 请使用递归算法实现。

我的算法不知道哪里有问题,输入的回文串就是不显示结果。
希望在我的算法下找出我的错误 谢谢
展开
 我来答
447587096
2015-12-13 · TA获得超过5047个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1178万
展开全部
//你的错误在于递归调用的时候,i每次都是0,所以要用static int i = 0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hui(char a[10000])
{
int n;
static int i=0; //这里改为static int i = 0就对了,因为你递归调用i的时候每次都把i置为0了,那肯定不行的,因为你的i是在变得,所以用static
n=strlen(a);

if(i>=n-i-1)
return 1;
else
{
if (a[i]==a[n-i-1])
{
i++;
hui(a);
}
else
return 0;
}
}
int main(int argc, char *argv[])
{
char a[10000];
gets(a);
if (strlen(a)==0) {printf("No\n");}
else
{
if(hui(a))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
追问
哦谢谢谢谢 我应该把inti=0写在函数外面的。
不过我是小白 static 在这里是什么作用啊,我从来没见过
追答
static  用于局部变量的时候 只会在第一次调用的时候执行,也就是说你后面每次调用的时候就不运行static int i = 0这句话了,比如你第一次调用了函数,会执行static int i=0这句话,当你i++之后,i变成了1,然后递归hui(a),再次执行的时候,static int i = 0这句话就不会执行了,i是从上次的1值开始了。
你也可以把i定义为全局变量
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式