查找数字的sqrt的递归函数的问题

Ete*_*ner 1 c++

下面是一个简单的程序,它使用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)

Rob*_*vey 5

您可能需要在low == high比较中放置一个范围,即high - low < .000001精度为六位小数.