请问一下我这个递归有什么问题
#include<stdio.h>
#include <string.h>
#define N 100
int fun(char str[],int x,int y);
{ if(str[x]!=str[y])
return 0;
else
{ if(x>=y)
return 1;
fun(str,x+1,y-1)
}
}
int main()
{ int i=0,j,k,z=0;
char a[N];
gets(a);
k=strlen(a);
j=k-1;
z=fun(a,i,j);
if(z==1)
printf("Yes\n");
if(z==0)
printf("No\n");
}
[解决办法]
原来是判断回文串。这么说来,不输入数字时,楼主你这递归就有问题。
另外,递归函数里的“最后一行”fun(str,x+1,y-1);是不是就会作为返回值返回?有哪本书说了“最后一行”会自动作为返回值返回吗?
[解决办法]
能实现啊,错了两处:
- C/C++ code
#include<stdio.h>#include <string.h>#define N 100 int fun(char str[],int x,int y) //这里多了个分号{ if(str[x]!=str[y]) return 0; else { if(x>=y) return 1; fun(str,x+1,y-1); //少了分号 }}int main() { int i=0,j,k,z=0; char a[N]; gets(a); k=strlen(a); j=k-1; z=fun(a,i,j); if(z==1) printf("Yes\n"); if(z==0) printf("No\n"); }