添砖java


私信TA

用户名:dotcpp0630817

访问量:549

签 名:

等  级
排  名 28844
经  验 530
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 仲恺农业工程学院
专  业

  自我简介:

解题思路:  

很多人不会写其实是不知道公式怎么用,这边解释一下题目就简单了。     

                                                                  公式:               X[n+1]=(X[n]+a/X[n])/2

这当中X[n+1]指的是迭代的下一项,X[n]指的是迭代的当前项。默认我们使X[1]=1,后面的X[2],X[3],X[4]......都是a的平方根的近似解,只是精确度够不够的问题。

而由公式可知,X[2]是等于(X[1]+a/X[1])/2的,计算出来就是(1+a)/2,这也就是a平方根的第一个近似解,显然它的精确度是不够的,我们只要在代码中不断循环

计算(就是迭代),直到得到达到精确度要求的近似解就ok了。

注意事项:
保留三位小数,而不是一般题目的两位。
参考代码:

import java.util.Scanner;
public class Main {
   public static void main(String[]args){
       Scanner cin = new Scanner(System.in);
       int a = cin.nextInt();
       double n = 1.0;      //当成n
       double m;             //当成n+1
       while(true){
           m = (n+a/n)/2;        //让m成为迭代的下一项,也就是X[n+1]
           if(Math.abs(m-n)<0.00001)break;     //判断得到的解精确度够不够。
           n = m;                //让n=m,方便m的下一次迭代。
       }
       System.out.printf("%.3f",m);      //注意要m这个近似解而不是要n。
   }
}

 

0.0分

7 人评分

  评论区

  • «
  • »