c语言,利用递归判断回文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言,利用递归判断回文相关的知识,希望对你有一定的参考价值。

读入一个字符串,如果是回文,输出YES,否则输出NO

#include <stdio.h>
#include <string.h>
int main(void)

char p[100] = 0;
int i, t, n;
gets(p);
n = t = strlen(p);
--n;
t /= 2;
for (i = 0; i<t; ++i)

if (*(p + i) != *(p + n - i))

break;


if (i >= t)

printf("YES\\n");

else

printf("NO\\n");

return 0;

参考技术A #include<iostream.h>
int f(char str[100],int i,int leng)

if(str[i]!=str[leng-i-1]) return 0;
if(i==leng/2) return 1;
f(str,i+1,leng);

void main()

char str[100];
cin>>str;
for(int i=0;str[i]!='\0';i++);
if (f(str,0,i)) cout<<"YES";
else cout<<"NO";
cout<<endl;


验证 正确 给分追问

可是我都读不懂。。。

追答

我晕 哪里不懂 前一半颠倒和后一半比较 如果出现不相等的 就不是回文,一共比较长度一半次数

c[100]
I
----> <----
abccba
012345

c[0]=c[5]='a' c[i=0]=c[6-i-1] i++
c[1]=c[4]='b' c[i=1]=c[6-i-1] i++
c[2]=c[3]='c' 2==5/2 return 1; 是回文

c[100]
I
abc

c[0]!=c[2] return 0 不是回文

我靠 你要的是递归 不给我分 啥意思,服了

用递归判断字符串是不是为回文串(C语言) 用递归判断字符串是不是为回文串(C语言)

用递归来写程序,递归我不会写啊,那位大牛能帮帮忙,感谢感谢!

参考技术A #include <stdio.h>
#define SIZE 50
int isPalindrome(char str[]);
int elementSize=0;
static int i=0;
int main()

int j=0,result;
char element,str[SIZE];
printf("请输入字符串,以回车结束:\n");
/*以下用循环结构读入字符数组的元素,防止了因字符串中含有空格而不能全部读入的情况*/
scanf("%c",&element);
while(element!='\n')

str[j]=element;
elementSize++;//记录了数组中已有元素的个数
j++;
scanf("%c",&element);


if(isPalindrome(str))
printf("该字符串是回文字符串\n");
else
printf("该字符串不是回文字符串\n");

// system("pause");
return 0;

/*函数功能:判断字符串是否为回文串*/
int isPalindrome(char str[])

/*把数组元素前后对应比较,即第一个元素与最后一个元素比较是否相等,依此类推*/
if(i>=elementSize-i-1)//说明是回文串
return 1;

else if(str[i]==str[elementSize-i-1])

i++;//i为全局静态变量
isPalindrome(str);


else //出现不相等的情况,说明不是回文串,返回0
return 0;
本回答被提问者采纳

以上是关于c语言,利用递归判断回文的主要内容,如果未能解决你的问题,请参考以下文章

用递归的方法实现判断回文字符c语言

回文字符串——递归。C语言。

C语言:编写一个测试一个串是不是为回文的递归函数,是回文,返回1;不是,返回0。

C语言 关于判断回文数的程序

C语言:判断一个数是不是为回文数,要求如下:

C语言怎么判断一个数是不是是回文数?