求较大的数的开方函数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,结果就会莫名其妙。不知怎么回事。
...全文
198 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdwer 2006-03-10
  • 打赏
  • 举报
回复
奥,谢谢啊。我今天早上看了下我的代码,发现会出现死循环,所以出现内存溢出。
xueyong1203 2006-03-09
  • 打赏
  • 举报
回复
MathFP调用时需要先把你的数转化为它的格式
不能直接输入2

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧