说起来也搞笑,我为了这个方法折磨了半天,就是弄不懂这玩意到底是干啥的
结果没想动这玩意居然是用来算平方根的
气死
不过感觉以后可能用得到,记录一下方便后续查看
这里直接po出代码
public static double squareRootMethod(double x){
double guess = x;
double perviousGuess;
do{
perviousGuess = guess;
guess = 0.5 * (guess + x / guess);
} while (perviousGuess != guess);
return guess;
}
这个是一个方法,你可以将其添加到任意的代码片段中
方法自我声明两个变量,guess 和 perviousGuess
输入值为需要开方的数字,返回值为开根号后的数字
食用说明:
squareRootMethod(300);
输出结果为 17.32050807568877
squareRootMethod(300);
输出结果为 17.32050807568877
BUG发现与解决
你或许会注意到,当输入的数字为0或者为负数的时候,都没办法正常输出我们想要的数字
当输入为0的时候,会是一个无限循环
当输入为负数的时候,会是一个无穷大的负数
所以,需要使用一些if条件语句去判断
你或许会注意到,当输入的数字为0或者为负数的时候,都没办法正常输出我们想要的数字
当输入为0的时候,会是一个无限循环
当输入为负数的时候,会是一个无穷大的负数
所以,需要使用一些if条件语句去判断
改良后的代码为:
public static double squareRootMethod(double x){
if(x < 0){
return 0;
}
double guess = x;
double perviousGuess;
do{
perviousGuess = guess;
guess = 0.5 * (guess + x / guess);
} while (perviousGuess != guess);
return guess;
}
食用方法和上面的一样,有所不同的是,当输入的数字小于等于0的时候,输出0