冥月影 发表于 2019-10-8 14:58

学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;
      }
}



运行结果:


hearne 发表于 2019-10-8 15:10

第二行不对啊,是exp(-1);看清楚原题目中平方的位置

baronL 发表于 2019-10-8 15:53

答案是正确的吧,第二行那个验证的算式写错了

冥月影 发表于 2019-10-8 17:15

hearne 发表于 2019-10-8 15:10
第二行不对啊,是exp(-1);看清楚原题目中平方的位置

额,好吧,我傻掉了。。。

冥月影 发表于 2019-10-8 17:17

baronL 发表于 2019-10-8 15:53
答案是正确的吧,第二行那个验证的算式写错了

睡醒一看,真的是。。。。

Qu哥 发表于 2019-10-8 20:45

第二行 验证的算式写错了
页: [1]
查看完整版本: 学java循环部分又遇到问题了。。。