回复:(nuciewth)这个是个递归的.你试着拿一组数,然...
估计是我对递归理解不深,还是不明白。我再说详细一些,比较一下这两种代码:
int zheban(int *a,int i,int j,int x)
{
int mid=(i+j)/2;
if(x==a[mid])
{
return(mid);
}
if(i>j)
{
return(-1);//表示查找失败.
}
if(x<a[mid])
{
zheban(a,i,mid-1,x);
}
else
{
zheban(a,mid+1,j,x);
}
}
与下面这段代码(增加了两个return语句)
int zheban(int *a,int i,int j,int x)
{
int mid=(i+j)/2;
if(x==a[mid])
{
return(mid);
}
if(i>j)
{
return(-1);//表示查找失败.
}
if(x<a[mid])
{
return zheban(a,i,mid-1,x);
}
else
{
return zheban(a,mid+1,j,x);
}
}
有什么不同吗??第一个代码总觉得return 用的不够,为什么能从最远层调用传值到第一层,如果用第二种形式的代码肯定没说的
还望版主继续指教啊!