在执行函数的时候,会重复判定,然后才退出函数,实际需求就是判定一次,就应该跳出函数的;
以下为执行结果,请大家帮忙核实一下if else语句是否有错误应用或者其它问题导致的?
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;
}
你应该把while换成if,因为你下面是个递归,所以只要条件不满足它就会一直执行递归 直到满足条件退出
你可以把你需要实现的逻辑贴出来吗,你这个代码逻辑使用递归的目的是什么?