小弟我的C++ 二分查找法哪里错了

我的C++ 二分查找法错哪了
问题描述:用一个数组存放X轴的刻度,找出离指定刻度最近的最小刻度。例如:指定的值为15.123,最小最近刻度为15.

我的代码如下:可是老得不到正确的结果,求大侠帮看下错哪了?

#include <iostream>

using std::cout;
using std::endl;

double lengthOf(int begin, int num, double const *pArry)
{
double sum = 0;
for(int i = begin; i<= begin - 1 + num; ++i)
{
sum += (pArry[i] - pArry[i - 1]);
}
return sum;
}

int BinarySearch(double value, int left, int right, double const *pArry)
{
int middle = (left + right) / 2;
int num = right - middle;
double temValue = lengthOf(left, num, pArry);
if(temValue < value)
{
if(lengthOf(left, num + 1, pArry) < value)
{
return BinarySearch(value - temValue, middle, right, pArry);
}
else
{
return middle;
}
}
else if(temValue > value)
{

if(lengthOf(left, num - 1, pArry) > value)
{
return BinarySearch(value, left, left + num, pArry);
}
else
{
return middle - 1;
}
}
else
{
return middle;
}

}

int main(int argv, char* argc[])
{

double arry[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
double value = 14.123;
int right = sizeof(arry)/sizeof(*arry);
int index = BinarySearch(value, 1, right, arry);
    cout<<right<<" : "<<index<<endl;
return 0;
}
二分查找 c++

------解决方案--------------------
#include <iostream>

using std::cout;
using std::endl;