求折半查找的递归算法!!
那位老兄帮下呀!!<p>我也说过是大致代码,习惯把他们定义成全局的了.的确是参数不匹配,谢谢指正.[em01] <P>哈哈,只是看见有点不对,所以标了出来<BR>我这网速太卡,先下了</P> <P>这里有个细节问一下,只用了一个return就完成了程序,出口调用的返回值如何能一层层返回到调用函数??也就是为什么递归调用的函数不是以 return zheban(i,mid-1);形式。<BR></P> [em06] 这个是个递归的.你试着拿一组数,然后在纸上划下就能理解出来了.
回复:(nuciewth)这个是个递归的.你试着拿一组数,然...
估计是我对递归理解不深,还是不明白。我再说详细一些,比较一下这两种代码:<BR>int zheban(int *a,int i,int j,int x)<BR>{<BR> int mid=(i+j)/2;<BR> if(x==a[mid])<BR> {<BR> return(mid);<BR> }<BR> if(i>j)<BR> {<BR> return(-1);//表示查找失败.<BR> }<BR> if(x<a[mid])<BR> {<BR> zheban(a,i,mid-1,x);<BR> }<BR> else<BR> {<BR> zheban(a,mid+1,j,x);<BR> }<BR> <BR>}<BR><BR>与下面这段代码(增加了两个return语句)<BR><BR>int zheban(int *a,int i,int j,int x)<BR>{<BR> int mid=(i+j)/2;<BR> if(x==a[mid])<BR> {<BR> return(mid);<BR> }<BR> if(i>j)<BR> {<BR> return(-1);//表示查找失败.<BR> }<BR> if(x<a[mid])<BR> {<BR> return zheban(a,i,mid-1,x);<BR> }<BR> else<BR> {<BR> return zheban(a,mid+1,j,x);<BR> }<BR> <BR>}<BR>有什么不同吗??第一个代码总觉得return 用的不够,为什么能从最远层调用传值到第一层,如果用第二种形式的代码肯定没说的<BR>还望版主继续指教啊!回复 4# nuciewth 的帖子
用指针数据就是会出现这个问题的
页:
[1]
