C/C++ 求浮點數平方根


求浮點數x的平方根y,精度誤差e。

1、顯然y <= x,即在 [0, x] 中查找一個y,使得滿足 | y * y - x | <= e,很容易想到二分查找,時間復雜度是O(logx)。

float Sqrt(float x)
{
    const float e = 0.0001;
    float low = 0, high = x, y = (low + high) / 2;
    while (y * y - x > e || y * y - x < -e)
    {
        if (y * y - x > e)
        {
            high = y; // 大了
        }
        else if(y * y - x < -e)
        {
            low = y; // 小了
        }
        y = (low + high) / 2;
    }
    return y;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM