解题思路:一直循环就好了,注意一下结束条件。开始没看懂迭代公式,还专门去查了一下

注意事项:

因为想使用递归,走了很多弯路,直接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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论