学java循环部分又遇到问题了。。。
本帖最后由 冥月影 于 2019-10-8 17:17 编辑我实在是太菜了。。。
题目:
代码:
package unit7;
public class Test02 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("gauss(1, 100) = " + gauss(1, 100));
System.out.println("Math.exp((-1)^2) = " + Math.exp(Math.pow((-1), 2)));
}
/**
*要想计算 exp(-x^2) 的值,一种办法是用如下的无穷级数展开:
* exp(-x^2) = 1 - x^2 + x^4 / 2 - x^6 +...
*在上述级数中,第 i 项为“(-1)^i * x^2i / i!”。请编写一个名为 gauss 的方法,它接受形参 x 和 n,
*并返回上述级数中前 n 项的和。编写这个方法时,可不能使用方法 factorial 和 pow 哟!
* @Param x
* @param n n越大精度越高
* @return
*/
public static double gauss(double x, int n) {
double tmp = 1;
double sum = 1;
for(int i = 1; i < n; i++) {
/*
* 1 -1 * x*x -1*-1 * x*x*x*x -1*-1*-1 * x*x*x*x*x*x
*
* i! i! i!
*
*
*/
tmp = tmp * -1*x*x / i;
sum = sum + tmp;
// System.out.println(tmp);
}
return sum;
}
}
运行结果:
第二行不对啊,是exp(-1);看清楚原题目中平方的位置 答案是正确的吧,第二行那个验证的算式写错了 hearne 发表于 2019-10-8 15:10
第二行不对啊,是exp(-1);看清楚原题目中平方的位置
额,好吧,我傻掉了。。。 baronL 发表于 2019-10-8 15:53
答案是正确的吧,第二行那个验证的算式写错了
睡醒一看,真的是。。。。 第二行 验证的算式写错了
页:
[1]