如何编程实现“求一个数的平方根”?要求精确到小数点后 6 位?
借助迭代思想可以帮助我们进行无穷次地逼近,求得方程的精确或者近似解。
比如说,我们想计算某个给定正整数 n(n>1)的平方根,如果不使用编程语言自带的函数,你会如何来实现呢?
假设有正整数 n,这个平方根一定小于 n 本身,并且大于 1。那么这个问题就转换成,在 1 到 n 之间,找一个数字等于 n 的平方根。
我这里采用迭代中常见的二分法。每次查看区间内的中间值,检验它是否符合标准。
举个例子,假如我们要找到 10 的平方根。我们需要先看 1 到 10 的中间数值,也就是 11/2=5.5。5.5 的平方是大于 10 的,所以我们要一个更小的数值,就看 5.5 和 1 之间的 3.25。由于 3.25 的平方也是大于 10 的,继续查看 3.25 和 1 之间的数值,也就是 2.125。这时,2.125 的平方小于 10 了,所以看 2.125 和 3.25 之间的值,一直继续下去,直到发现某个数的平方正好是 10。
我把具体的步骤画成了一张图,你可以看看。
public static void main(String[] args) {
int number = 10;
double squareRoot = getSqureRoot(number, 0.000001