woaiguoguo 发表于 2006-11-23 12:42

求折半查找的递归算法!!

那位老兄帮下呀!!

nuciewth 发表于 2006-11-24 17:48

//大致如下,要求a[]按非递减排列.<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&gt;j)<BR>   {<BR>        return(-1);//表示查找失败.<BR>   }<BR>   if(x&lt;a[mid])<BR>   {<BR>        zheban(i,mid-1);<BR>   }<BR>   else<BR>   {<BR>        zheban(mid+1,j);<BR>   }<BR>   <BR>}

perfect 发表于 2006-11-24 21:29

int  zheban(<FONT color=#ff0000>int *a</FONT>,int i,int j,int x)<BR>zheban(i,mid-1);<BR>

nuciewth 发表于 2006-11-24 21:33

<DIV class=quote><B>以下是引用<U>perfect</U>在2006-11-24 21:29:58的发言:</B><BR>int  zheban(<FONT color=#ff0000>int *a</FONT>,int i,int j,int x)<BR>zheban(i,mid-1);<BR></DIV>
<p>我也说过是大致代码,习惯把他们定义成全局的了.的确是参数不匹配,谢谢指正.[em01]

perfect 发表于 2006-11-24 21:40

<P>哈哈,只是看见有点不对,所以标了出来<BR>我这网速太卡,先下了</P>

youlong699 发表于 2007-5-22 22:18

<P>这里有个细节问一下,只用了一个return就完成了程序,出口调用的返回值如何能一层层返回到调用函数??也就是为什么递归调用的函数不是以     return zheban(i,mid-1);形式。<BR></P>

youlong699 发表于 2007-5-23 22:19

[em06]

nuciewth 发表于 2007-5-24 22:05

这个是个递归的.你试着拿一组数,然后在纸上划下就能理解出来了.

youlong699 发表于 2007-5-25 12:29

回复:(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&gt;j)<BR>   {<BR>        return(-1);//表示查找失败.<BR>   }<BR>   if(x&lt;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&gt;j)<BR>   {<BR>        return(-1);//表示查找失败.<BR>   }<BR>   if(x&lt;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>还望版主继续指教啊!

vfdff 发表于 2008-6-12 01:01

回复 4# nuciewth 的帖子

用指针
数据就是会出现这个问题的

页: [1]

编程论坛