用函数递归求字符串周期,不怕一万就怕万一!
下面的程序我自己想着写的,编译运行以后发现一个问题。一些字符串结果显示不对,如:abcabc(ABCABC)或123123或hihlhohihlho出现错误的结果 0 ,应该还有别的。 麻烦大家看看问题在哪里,谢谢!#include <stdio.h>
void stringperiod(char *c,int stt,int len,int *s)
{
int i,sum=0,nsum=0;
if(c[stt]=='\0') return;
for(i=0;i<len;i++)
{
sum=sum+c[i]*(i+1);
nsum=nsum+c[stt+i]*(i+1);
}
if(sum==nsum)
{
(*s)++;
stt+=len;
stringperiod(c,stt,len,s);
}
else
{
stt++;
len=len+len*(*s)+1;
(*s)=0;
stringperiod(c,stt,len,s);
}
}
int strperiod(char *c)
{
int s=0;
int *p;
p=&s;
stringperiod(c,1,1,p);
return s;
}
int main()
{
char c[100];
scanf("%s",c);
printf("%d\n",strperiod(c));
return 0;
}
[ 本帖最后由 hecate3835 于 2012-5-28 21:22 编辑 ]