回复 9楼 rjsp
大佬,你程序的思路应该是先对中点进行判断,若不是要找的数,再对左半部分进行查找,再找不到,最后对右半部进行查找。可是如果没有要找的那个数的话,你程序里并没有对这个情况进行判断并返回-1。
还有index什么时候会等于-1?毕竟你函数里并没有return -1呀。
程序代码: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;
}