解题思路:一直循环就好了,注意一下结束条件。开始没看懂迭代公式,还专门去查了一下
注意事项:
因为想使用递归,走了很多弯路,直接while循环的话会简单很多
最开始时候再while中用的递归,使得一直无限循环,因为递归结束后会返回到while中。
删掉了while后,发现结果总会返回第一个值,后来猜想是递归的问题,一层层打开,还要一层层关上,使得最后返回的就是第一个值,所以想到杀死线程
开始想在主函数中输出,但是发现直接杀死线程和return没法联合使用,就变成再自定义函数输出了
再自定义函数中输出时,开始把输出放在了exit之前,发现对于一次性就能找到正确答案的情况无法输出,会直接退出,所以把输出放到了最后
参考代码:
import java.util.Scanner;
import static java.lang.System.exit;
//X[n+1]=(X[n]+a/X[n])/2
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
double a=x/2;
sqrt(x,a);
//System.out.println(String.format("%.3f",sqrt(x,a)));
}
static void sqrt(int x,double a ) {
double b = a;
a = (a + x / a) / 2;
//System.out.println(a + " " + b);
if (Math.abs(a - b) >= 0.00001) {
sqrt(x, a);
exit(0);
}
System.out.println(String.format("%.3f",a));
}
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复