澄清"计算e ^ x而不使用Java中的内置函数"

时间:2018-01-02 06:53:22

标签: java loops iteration

问题基本上是在Java中没有内置函数的情况下计算e ^ x。 代码序列是e ^ x = 1 + x + x2 / 2!+ x3 / 3!+ x4 / 4!+ ...

以下是我对这个问题的尝试:

public static void myexp(double x, double i){
    double j = 1.0;
    double sum = x;
    while (j <= i){
        j = j + 1;
        sum = sum + (sum * (x / (j)));
        System.out.println(sum + 1 + x);
    }
}

public static void main(String[] args) {
    double x = 1;
    double i = 5.0;
    myexp(x, i);
}

现在它还没有工作,最后我放弃了并查看模型答案应该是什么样的(我知道,我知道)。这就是它(以我的代码风格):

public static void myexp(double x, double i){
    double j = 1.0;
    double sum = x;
    double result = 1.0;
    while (j <= i){
        j = j + 1;
        sum = sum * (x / (j));
        result = result + sum;
        System.out.println(result + x);
    }
}

现在不同的是包含了&#39;结果&#39;变量,描述序列的总和。但是,当我写作时,我以为我已经把它合并了 &#34; sum = sum+(sum*(x/(j)));&#34 ;. 但是机器识别出一种风格而不是另一种风格。是什么给了什么?

1 个答案:

答案 0 :(得分:0)

在每次迭代中,您应该将术语

添加到总和中
az network list-usages --location <location>

其中sum * x / j 是上一次迭代中添加的术语。

这意味着您必须将上一次迭代中添加的术语存储在单独的变量中。

如果对总sum(应该是所有迭代的所有项的总和)和当前迭代的术语(result)使用相同的变量,获得完全不同的结果。

换句话说

sum

不等于

sum = sum + (sum * (x / (j)));

因为sum = sum * (x / (j)); result = result + sum; 的值取决于sum的先前值,因此您无法消除该变量。