【发布时间】:2015-08-22 10:45:34
【问题描述】:
我只是好奇我有这段 Java 代码。 我的问题是返回 1.0 * 递归调用的原因是什么? 在代码的 else 部分中
我的第二个问题是,当我在代码的主要部分中将 E 变量声明为 0.0000001 AND A 时,X 变量作为双精度值,我将 A 设为 0 并进入无限循环。我该如何解决?
public static double sqrtR(long x, double e, double a) {
if (Math.abs(a * a - x) <= e) {
return a;
} else {
a = (a * a + x) / (2 * a);
return 1.0 * (sqrtR(x, e, a));
}
}
【问题讨论】:
-
能否提供样本输入和输出?
-
public static void main(String[] args) { double x=2;双 e=0.0000001;双a=1; System.out.println("X 的平方根是" + sqrtR(x,e,a)); } }
-
我可能已经想通了,如何添加迭代次数?
-
乘以 1.0 绝对没有效果。可以简化。
-
你是什么意思,你不确定 1.0 “做什么”?代码试图将某个值乘以 1,这是没有意义的。你不明白哪一部分?有人可能认为他们有充分的理由这样做,但他们错了。
标签: java recursion newtons-method