求较大的数的开方函数int型的。
bdwer 2006-03-09 07:54:53 我写了一个开方函数:
import java.lang.Math.*;
public class MySqrt
{
static int my_sqrt(int x){
return (int)try_sqrt(1, x);
}
static boolean good_enough(long guess, int x){
return ( my_abs( (guess * guess) - x) < 1);
}
static long try_sqrt(long guess, int x){
if(good_enough(guess, x))
return guess;
else
return try_sqrt( (guess + (x / guess)) / 2, x);
}
static long my_abs(long y){
if(y < 0)
return (-y);
else
return y;
}
}
当数字较小的时候还可以比较精确的得到答案,但是:当数字为40000这个级别左右的时候就出现了outoffMemory。请问各位朋友做开方函数的时候是怎做的哪?
另外我还试了下:mathfp这个开放类库中的sqrt方法。也不能得到正确的结果,用较小数的时候也不行,比如用2,结果就会莫名其妙。不知怎么回事。