首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教一下小弟我这个递归有什么有关问题

2012-04-28 
请问一下我这个递归有什么问题#includestdio.h#include string.h#define N 100int fun(char str[],int

请问一下我这个递归有什么问题
#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");  } 

热点排行