首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】

    令切线方程等于0 (纵轴截距取0),即可求出: 代入f(x) = x^2 - n,继续化简: 基于上述迭代公式,可以给出了一个求平方根的算法。...事实上,这也的确是很多语言中内置的开平方函数的实现方法。牛顿迭代法也同样适用于求解其他多次方程的解。...此代码中pre和res可以用res和next替换,见注释部分,当然循环中也得将pre换为next 解法2:二分搜索法 对于一个非负数n,它的平方根取整 ,如下图所示,有x=1、2、4共3个整数交点,...于是在[0, x/2+1]这个范围内进行二分搜索,可以求出n的int型平方根,mid=(low+up)/2,其初值为x/2,结果应在[low, up]的mid或up处取得。...=mid+1; // 目标值大于mid处平方,在开区间(mid, up]中找,下界low的值调整为mid-1 else up=mid-1; // 目标值小于mid处平方

    3.2K10

    算法--二分查找--求平方根(循环法递归法)

    删除操作,就必须保证每次操作后有序,或者查找前继续排序,这样成本高,二分查找不合适 数据太小,不用二分查找,直接遍历 数据太大,也不用,因为数组需要连续的内存,存储数据比较吃力 复杂度 lg2n 题目: 求一个数的平方根...例如:二分法求根号5 a:折半: 5/2=2.5 b:平方校验: 2.5*2.5=6.25>5,并且得到当前上限2.5 c:再次向下折半:2.5/2=1.25 d:平方校验:1.25*1.25...=1.5625<5,得到当前下限1.25 e:再次折半:2.5-(2.5-1.25)/2=1.875 f:平方校验:1.875*1.875=3.515625<5,得到当前下限1.875 循环求解...upper = curValue; } return curValue; } int main() { double x; std::cin >> x; std::cout 平方根是...rootbinarysearch_R(num,lower,curValue); } int main() { double x; std::cin >> x; std::cout 平方根是

    1.5K20
    领券