两种方法求解平方根 -- 牛顿法、二分法

Leetcode相关题目:
69. x 的平方根

牛顿法 迭代公式:

以求解 a a a 的平方根为例,可转换为求解方程 f ( x ) f(x) f(x)的根。 f ( x ) = x 2 − a f(x)=x^2-a f(x)=x2a

迭代公式如下: x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1} = x_n - \frac {f(x_n)}{f'(x_n)} xn+1=xnf(xn)f(xn)

代入 f ( x ) f(x) f(x) 得:
x n + 1 = x n − x n 2 − a 2 ∗ x n = x n + a / x n 2 x_{n+1} = x_n - \frac {x_n^2-a}{2*x_n} = \frac{x_n+a/x_n}{2} xn+1=xn2xnxn2a=2xn+a/xn

停止条件为: ∣ x n + 1 − x n ∣ < ϵ |x_{n+1} - x_n| < \epsilon xn+1xn<ϵ
在这里插入图片描述


class MySqrt:"""69. x 的平方根https://leetcode.cn/problems/sqrtx/description/"""def solution1(self, x: int) -> int:"""牛顿迭代法,递归:param x::return:"""self.a = xif x == 0:return 0return int(self.sqrts(x))def sqrts(self, x: float):res = (x + self.a / x) / 2if res == x:return xelse:return self.sqrts(res)def solution2(self, a: int) -> int:"""牛顿法,迭代:param a::return:"""if a == 0:return 0x = float(a)while (x + a / x) / 2 != x:x = (x + a / x) / 2return int(x)def solution3(self, x: int) -> int:"""二分法:param a::return:"""l, r, ans = 0, x, -1while l <= r:mid = l + (r - l) // 2if mid * mid <= x:ans = midl = mid + 1else:r = mid - 1return ans

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关键字:try-catch关键字

在 Java 中&#xff0c;try-catch关键字用于异常处理。它们允许编写代码来捕获和处理异常&#xff0c;以确保程序能够在出现问题时合理地处理它们而不会崩溃。 以下是try-catch关键字的基本语法&#xff1a; 在try块中编写可能会抛出异常的代码。如果在try块中的任何代码抛出…

el-date-picker周选择器获取选择的日期范围

<el-date-pickerv-model"formData.date"type"week"format"yyyy 第 WW 周"placeholder"选择周"change"weekChange"> </el-date-picker>// 方法一&#xff1a;weekChange(val) {let startTime new Date(val.getT…

GPT3.5 改用 GPT4 价格翻了30倍 如何破局? GPT 对话成本推演

场景介绍 假设你搭建了一个平台&#xff0c;提供 ChatGPT 3.5 的聊天服务。目前已经有一批用户的使用数据&#xff0c;想要测算一下如果更换 GPT 4.0 服务需要多少成本&#xff1f; 方案阐述 如果是全切&#xff0c;最简单粗暴的方案就是根据提供 ChatGPT 3.5 消费的金额乘…

Kafka安装及简单使用介绍

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

深入解析泛型

一、泛型的诞生 在C#1 中我们还没有泛型的时候我们收集数据通常需要使用到数组&#xff0c;或者使用封装好的数组集合Hashtable ArrayList。 举个例子&#xff1a; 我们在读取文件的时候就会需要一个数组来储存读取的数据的内容 但我们并不知数据的具体长度也就无法在声明的…

对I2C总线上挂接多个AT24C02的读写操作

#include <reg51.h> // 包含51单片机寄存器定义的头文件 #include <intrins.h> //包含_nop_()函数定义的头文件 #define OP_READ1 0xa1 // 器件1地址以及读取操作,0xa1即为1010 0001B #define OP_WRITE1 0xa0 // 器件1地址以…

数据结构 模拟实现LinkedList单向不循环链表

目录 一、链表的简单介绍 二、链表的接口 三、链表的方法实现 &#xff08;1&#xff09;display方法 &#xff08;2&#xff09;size得到单链表的长度方法 &#xff08;3&#xff09;addFirst头插方法 &#xff08;4&#xff09;addLast尾插方法 &#xff08;5&#xf…

【深度解析C++】const成员函数

系列文章目录 &#x1f308;座右铭&#x1f308;&#xff1a;人的一生这么长、你凭什么用短短的几年去衡量自己的一生&#xff01; &#x1f495;个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C,自顶向下看Java-CSDN博客 ❤️相关文章❤️&#xff1a;Cthis指针&#xf…

特殊权限(suid sticky acl mask)

1.suid 1. 普通用户可不可以修改密码&#xff1f; 答&#xff1a;是可以的&#xff0c;可以修改自己的密码 2. /etc/shadow 文件的作用是什么&#xff1f; 答&#xff1a;存储用户密码的文件 3. 普通用户是否可以修改/etc/shadow 文件&#xff1f; 答&#xff1a;不可以&…

CSDN - 从CSDN下载自己上传的资源要下载码, 自己无法下载

从CSDN下载自己上传的资源要下载码, 自己无法下载 概述 程序里面要用一个参数文件的加解密类, 想到自己以前上传到csdn有demo. 就去下载自己上传的demo. 无法下载, 需要下载码. 也不知道这下载码怎么获得? 按照提示去关注CSDN官方的号, 关注了之后没啥反应, 应该是以前关注过…

java中PhantomReference WeakReference SoftReference垃圾回收触发时机以及使用场景

目录 强引用 垃圾回收触发时机 使用场景 SoftReference&#xff08;软引用&#xff09; 垃圾回收触发时机 使用场景 WeakReference &#xff08;弱引用&#xff09; 垃圾回收触发时机 使用场景 PhantomReference &#xff08;虚引用、幽灵引用&#xff09; 垃圾回收…

2023-12-22 LeetCode每日一题(得到山形数组的最少删除次数)

2023-12-22每日一题 一、题目编号 1671. 得到山形数组的最少删除次数二、题目链接 点击跳转到题目位置 三、题目描述 我们定义 arr 是 山形数组 当且仅当它满足&#xff1a; arr.length > 3存在某个下标 i &#xff08;从 0 开始&#xff09; 满足 0 < i < arr.…