Не понятно, о чем вы спрашиваете. Я думаю вы хотите единственную инструкцию возврата, которую можно было бы сделать с помощью этого редактирования вашей функции:
extern int a[];
int binarysearch(int l,int h,int key)
{
int mid;
mid=(l+h)/2;
if(l<=h) {
if(key>a[mid]) {
mid = binarysearch(mid+1,h,key);
} else if(key<a[mid]) {
mid = binarysearch(l,mid-1,key);
}
} else {
mid = -1;
}
return mid;
}
Ваша первоначальная функция вызвала для меня диагностику компилятора c:
bb. c: 17: 1: предупреждение: элемент управления может достигнуть конца недействительной функции [-Wreturn-type]}
Что выглядит как ложное предупреждение компилятора, поскольку он видит, что конструкция:
if (a == b) {
return ...;
} else if (a < b) {
return ...;
} else if (a > b) {
return ...;
}
имеет некоторые другие возможности. Я добавил:
return -42;
и это, казалось, удовлетворило его.