用递归判断字符串是不是为回文串(C语言) 用递归判断字符串是不是为回文串(C语言)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用递归判断字符串是不是为回文串(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语言,利用递归判断回文
读入一个字符串,如果是回文,输出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语言)的主要内容,如果未能解决你的问题,请参考以下文章