zoukankan      html  css  js  c++  java
  • 二分法实现开方

    一个面试题:不用sqrt函数如何实现开方

    用二分法。

    上界初始化为数字本身,下界初始化为0.0,这样用二分,判断中间数字的平方和目标数字比较,再修改上界和下界,直到小于一定的阈值。

    注意结束条件和精度判断

    //
    // Created by LK on 2020/3/21.
    
    #include <iostream>
    #include <cmath>
    using namespace std;
    // 不用sqrt库函数,实现开方
    // 思路用二分法,比如2,  left=0,right = 2, 然后
    class Solution
    {
    public:
        double Sqrt(double n)
        {
    //        if(n == 1)
    //            return n;
            double left = 0.0;
            double hight = n;
            double p = 1e-5;  // 此处为精度,当满足该精度时返回近似值
            double mid = (left + hight)/2.0;
            while (fabs(mid * mid - n) > p)  // 精度比较
            {
                if(mid * mid > n)
                    hight = mid;
                else if (mid * mid < n)
                    left = mid;
                else
                    return mid;
                mid = (left + hight)/2.0;
            }
            return mid;
        }
    };
    int main()
    {
        Solution s;
        cout << s.Sqrt(4);
        return 0;
    }
  • 相关阅读:
    南阳779
    南阳599
    南阳484
    margin叠加相邻两个元素的上下margin是叠加在一起
    margin
    padding
    css05 字体以及行间距
    mysql相似于oracle的to_char() to_date()方法
    sqlite两表更新update
    SQL查找重复项目
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12538461.html
Copyright © 2011-2022 走看看