为什么条件会判断三次,if else语句有什么问题

问题遇到的现象和发生背景

在执行函数的时候,会重复判定,然后才退出函数,实际需求就是判定一次,就应该跳出函数的;
以下为执行结果,请大家帮忙核实一下if else语句是否有错误应用或者其它问题导致的?

img

问题相关代码,请勿粘贴截图
void binary_search(int a[],int finder,int star,int end)
{
    int i=star;
    int j=end;
    int temp=finder;
while((j-i)>=2)
{
    int k=(j-i)/2+i;
    cout<<"k="<<k<<endl;
    int temp=finder;
    if(a[k]==temp)
    {
    cout<<"This finder is number"<<k+1<<endl;
    return;
    }
    else if(a[k]<temp)
    {
    i=k+1;
    binary_search(a,finder,i,end);
    }
    else if(a[k]>temp)
    {
    j=k-1;
    binary_search(a,finder,star,j);
    }
    
}

cout<<"This finder is not find"<<endl;
return;

}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

你应该把while换成if,因为你下面是个递归,所以只要条件不满足它就会一直执行递归 直到满足条件退出

你可以把你需要实现的逻辑贴出来吗,你这个代码逻辑使用递归的目的是什么?