#define SEARCH_NOT_FOUND -1 //没有找到查询的目标 /************************************************************************/ /* 二分法查找[递归实现版本] */ /* arr: 待查找的数组 */ /* first: 搜索开始下标 */ /* last: 搜索结束下标的后一位置 */ /* target: 搜索的目标值 */ /* pcount: 查找次数 */ /* 返回值: 搜索到小标位置,如果没有找到则返回SEARCH_NOT_FOUND */ /************************************************************************/ int binarySearchWithRecursion(const int arr[],int first,int last,int target,int *pcount) { if (pcount)//统计查找次数 { (*pcount)++; } if (first<0 || first>=last)//如果开始下标小于零或者开始下标大于或等于结束下标则说明不能找到 { return SEARCH_NOT_FOUND; } int mid = (first+last)/2; if (target==arr[mid])//找到 { return mid; } if (target<arr[mid])//目标小于mid位置的值 { return binarySearchWithRecursion(arr,first,mid,target,pcount);//搜索前子表 } if (arr[mid]<target)//目