题目:
思路:
第一种方法:利用二分查找的思想。判断一个数的中间值的平方是不是等于这个数是的话直接返回,否则的话根据middle^2和x的大小确定Low和high的值。这里有注意的一个点就是while的判断条件,如果high-low>1的话才可以继续循环。否则的话会陷入死循环。
以下是第一种方法的java代码:
import java.util.Random;public class findsqrt { public int my_sqrt(int x){ int result = 0; int low = 0; int high = x; while((high-low)>1){ int middle = low + (high - low)/2; int middle_power = middle*middle; if(middle_power == x){ return middle; }else if(middle_power < x){ low = middle; }else{ high = middle; } } result = low; return result; } //这是一个简单的测试代码,结果表明该代码是正确的 public static void main(String[] args){ Random rand = new Random(); findsqrt fs = new findsqrt(); int times = 1000; int x = 0; int right = 0; for(int i=0; i