问题基本上是在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)));
”时,我以为我已经合并了。但是机器识别出一种风格而不是另一种风格。是什么赋予了?
在每次迭代中,您应该将该项添加到总和中
sum * x / j
其中sum
是上一次迭代中添加的术语。
这意味着您必须将上一次迭代中添加的术语存储在单独的变量中。
如果对总result
(应该是所有迭代的所有项的总和)和当前迭代的术语(sum
)使用相同的变量,则会得到完全不同的结果。
换一种说法
sum = sum + (sum * (x / (j)));
不等于
sum = sum * (x / (j));
result = result + sum;
因为sum
的值取决于sum
的先前值,因此您无法消除该变量。