69. x 的平方根
69. x 的平方根
开平方根的方法主要有以下几种:
-
分母有理化法:这种方法适用于处理无理数的平方根。具体步骤包括:
- 设 ,其中 和 均为非负实数。
- 对 进行分母有理化:。
- 解方程 ,求解得到 和 分别为 和 的平方根。
-
牛顿迭代法:这是一种通过迭代逼近求解平方根的方法。步骤如下:
- 设 为要求平方根的数,初始值 。
- 根据迭代公式 ,不断迭代直到满足一定的收敛条件。
- 当 ( 为一个足够小的正数)时,认为找到了一个足够精确的平方根。
-
二分法:通过不断缩小搜索范围来逼近平方根。步骤如下:
- 设 为要求平方根的数,取区间 作为搜索范围。
- 取区间中点 ,计算 。
- 根据 的正负性调整搜索范围,重复执行步骤,直到找到精确的平方根或达到预设的精度要求。
-
笔算开平方法:适用于求任何正数的算术平方根。步骤包括:
- 将被开方数的整数部分从个位起向左每隔两位划为一段,用撇号分开。
- 根据左边第一段中的数,求得平方根的最高位上的数。
- 从第一段的数中减去最高位上数的平方,形成第一个余数。
- 用求得的最高位数乘以2试除第一个余数,得到的最大整数作为试商。
- 用同样的方法继续求平方根的其他各位上的数。1
平方根的定义和性质:平方根表示为 ,其中非负数的平方根被称为算术平方根,表示为 。正数的平方根有两个值,互为相反数,负数没有平方根,0的平方根是0。2
/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
if (x < 0) {
return -1;
}
if (x === 0 || x === 1) return x;
let left = 0, right = x;
while (left <= right) {
let mid = Math.floor((left + right) / 2);
if (mid * mid <= x && (mid + 1) * (mid + 1) > x) {
return mid;
} else if (mid * mid < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 出现意外行为时回退返回
return left;
};
console.log(mySqrt(5)); // 输出应该是2

浙公网安备 33010602011771号