解题思路:
很多人不会写其实是不知道公式怎么用,这边解释一下题目就简单了。
公式: 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 人评分
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:1710 |
C二级辅导-统计字符 (C语言代码)浏览:729 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:805 |
K-进制数 (C++代码)浏览:850 |
c primer plus 第十二章 12.1小节浏览:376 |
Pascal三角 (C语言代码)格式错误浏览:516 |
母牛的故事 (C语言代码)浏览:915 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:937 |
Hello, world! (C语言代码)浏览:714 |
C二级辅导-分段函数 (C语言代码)浏览:593 |