回复 9楼 rjsp
大佬,你程序的思路应该是先对中点进行判断,若不是要找的数,再对左半部分进行查找,再找不到,最后对右半部进行查找。可是如果没有要找的那个数的话,你程序里并没有对这个情况进行判断并返回-1。
还有index什么时候会等于-1?毕竟你函数里并没有return -1呀。
2019-11-05 15:01
程序代码:int findx4(int a[],int n,int x)
{
if(a[n/2]==x)
return n/2;
size_t index = findx4(a,n/2,x);
if(index!=-1)
return index;
return findx4(a+n/2+1,n-n/2-1,x);
}
2019-11-05 15:14
2019-11-05 15:18
2019-11-05 15:22
程序代码:size_t findx4( const int a[], size_t n, int key )
{
if( n == 0 )
return -1;
if( key < a[n/2] )
return findx4( a, n/2, key );
if( a[n/2] < key )
{
size_t index = findx4( a+n/2+1, n-n/2-1, key );
if( index != -1 )
index += n/2+1;
return index;
}
return n/2;
}
2019-11-05 15:27