回复 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; }