为什么用else if和if得到答案不一样?求解

#include
using namespace std;
long long a[200005],x;
bool bin(int L,int R)
{
if(L<=R){
int mid=(L+R)/2;
if(a[mid]==x)
return true;
else if(a[mid]>x)

bin(L,mid-1);
else bin(mid+1,R);
}
else if(L>R)//为什么if(L>R)不对
return false;
}
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<m;i++){
scanf("%d",&x);
if(bin(0,n-1)){
printf("Y");
}
else
printf("N");
}

return 0;

}

if elseif
与if if 的区别
if elseif假如第一个条件满足第二个elseif直接不执行(包括条件也不进行判断),只有第一个条件不满足的情况下,第二个elseif的判断条件才会执行;
if if 是第一个条件满足或者不满足,第二个if条件都会执行条件判断语句;
因此第一个if语句段里面对第二个判断条件的变量的数值进行修改的话,会影响到第二个判断语句,因此会导致你刚才说的那个问题

因为使用else if的时候 只能判断不满足之前条件的情况
而if判断的范围是全部

if (a < 5) {

} else if (a > 1) {
    // 这里只有a大于4,1-3没有
}

if(a > 1) {
    // 这时就是a>1的情况
}