使用二分法求平方根

2017-08-12  本文已影响0人  狗尾巴草败了
#include<iostream>
#include<math.h>
using namespace std;

#define inf 1e-7

double m_sqrt(double n)
{
    double low = 0;
    double high;
    if(n < 1)
        high = 1;
    else
        high = n;
    double mid;
    while(high - low > inf)
    {
        mid = (low + high) / 2;
        if(mid * mid > n)
            high = mid;
        else
            low = mid;
    }
    return (low + high) / 2;
}


int main()
{
    printf("%.6lf\n%.6lf\n", sqrt(0.5), m_sqrt(0.5));
    printf("%.6lf\n%.6lf\n", sqrt(3), m_sqrt(3));
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读