关于“在Java中没有内置函数计算e ^ x”的澄清

问题描述 投票:-1回答:1

问题基本上是在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);
    }
}

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

java loops iteration
1个回答
0
投票

在每次迭代中,您应该将该项添加到总和中

sum * x / j

其中sum是上一次迭代中添加的术语。

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

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

换一种说法

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

不等于

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

因为sum的值取决于sum的先前值,因此您无法消除该变量。

© www.soinside.com 2019 - 2024. All rights reserved.