东北大学吧 关注:252,784贴子:4,744,625
  • 0回复贴,共1

这两个并列的if语句和if else不等价?

只看楼主收藏回复

功能:一个递增的数组nums(没有重复的元素),以及一个target,当数组中存在时返回下标,否则,返回应该插入的位置;
出现的问题:
1. 在函数内调试输出的没问题,就是返回值不对,实在搞不懂了。
2. 递归调用时改成改为这样就正确了,为什么呀?看不出来什么值改变了呀
//if(nums[mid]>target) return binarySearch(nums,left,mid,target);
// if(nums[mid]<target) return binarySearch(nums,mid+1,right,target);
附上代码:
int binarySearch(vector<int> &nums, int left, int right, int target)
{
int mid=(left+right)/2;
if(nums[mid]==target) return mid;
if(left==right)
{
if(nums[mid]<target)
{
cout<<"inserted "<<left+1<<endl;
return (left+1);
}
else
{
cout<<"inserted "<<left<<endl;
return left;
}
}
else
{
/*
if(nums[mid]>target)binarySearch(nums,left,mid,target);
if(nums[mid]<=target)binarySearch(nums,mid+1,right,target);
*/
if(nums[mid]>target)
binarySearch(nums,left,mid,target);
else
binarySearch(nums,mid+1,right,target);
}
}


1楼2019-03-13 22:56回复