问题基本上是在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 ;.
但是机器识别出一种风格而不是另一种风格。是什么给了什么?
答案 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
的先前值,因此您无法消除该变量。