bool ExceedMax(int i)
{
return ( i > 234 ); //234 为最大值
}
int GetMaxNum()
{
int iMaxSofar = 100;
int iMinSofar = 1;
//setexcelvalue()
while( !ExceedMax(iMaxSofar) )
{
iMinSofar = iMaxSofar;
iMaxSofar += iMaxSofar; //乘以2
//setexcelvalue()
}
//得到相对的最小值和最大值
//以下以二分法获取真正的最大值
int iMid = (iMaxSofar + iMinSofar)/2; //取得中值
while( iMaxSofar > iMinSofar )
{
iMid = (iMaxSofar + iMinSofar)/2; //取得中值
if( ExceedMax(iMid) )
{
if(iMinSofar == iMid-1)
{
return iMinSofar;
}
else
{
iMaxSofar = iMid;
}
}
else
{
if(iMid == iMaxSofar-1)
{
return iMid;
}
else
{
iMinSofar = iMid;
}
}
}
return -1;
}