下面是一个简单的程序,它使用Bisection计算数字的sqrt.使用sqrtr(4,1,4)这样的调用执行此操作时会进行无休止的递归.我无法弄清楚为什么会这样.以下是功能:
double sqrtr(double N , double Low ,double High )
{
double value = 0.00;
double mid = (Low + High + 1)/2;
if(Low == High)
{
value = High;
}
else if (N < mid * mid )
{
value = sqrtr(N,Low,mid-1) ;
}
else if(N >= mid * mid)
{
value = sqrtr(N,mid,High) ;
}
return value;
}
Run Code Online (Sandbox Code Playgroud)