开平方用math.sqrt(double n);就可以了,n就是要被开方的数。 扩展下,如果要给m开n次方就用 java.lang.StrictMath.pow(m,1.0/n); 因为都是用的double类型的数字,所以会有误差,比如 m=64;n=3,y=java.lang.StrictMath.pow(m,1.0/n); 这样如果System.out.println(y);y就是3.9999999999999996 可以用下面的函数吧结果格式化下,格式化成整数 import java.text.DecimalFormat; public class Test82 { public static void main(String[] args) { double y=0; double x=64; int n=3;
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了都安免费建站欢迎大家使用!
y=java.lang.StrictMath.pow(x,1.0/n); DecimalFormat bd=new DecimalFormat("########");//把double四舍五入取整 System.out.println(bd.format(y)); } }
既然你们还没有学math那么目的当然是你们用循环来解。每个循环参数平方。如果超过x,就返回 当前数-1
没必要用递归,平方和是有公式的 n (n +1)(2n+1) /6
public class Test2 {
public static int getSquareSumFromN2M(int n, int m)
{
return getSquareSumOf(m) - getSquareSumOf(n - 1);
}
public static int getSquareSumOf(int n)
{
return n * (n + 1) * (2 * n + 1) / 6;
}
public static void main(String[] args)
{
System.out.println(getSquareSumFromN2M(2, 4));
}
}
写的很简单,但不算最好的办法。
int pos = 1;
int value = pos * pos;
while (value=12000){
pos ++;
value = pos * pos;
}
System.out.println("Value is:"+ pos);
补充回答:
你的算法的结果减一是正确结果。
不过你的还是while循环呀。 和我的算法是一样的。。。。
while{} 和 do{}while ,
如果不用while循环,这里其他两楼写法都是可以的。。
最简单的就是直接开方。。。呵呵
double value = 12000;
long i = Math.round(Math.sqrt(value));
if (i*ivalue) i++;
System.out.println(i);
不过这个算法不一定符合你们老师的企图。。