Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
澄清「;计算e^x时不使用Java中的内置函数;_Java_Loops_Iteration - Fatal编程技术网

澄清「;计算e^x时不使用Java中的内置函数;

澄清「;计算e^x时不使用Java中的内置函数;,java,loops,iteration,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)));

问题基本上是在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);
}
publicstaticvoidmyexp(双x,双i){
双j=1.0;
双和=x;

而(j在每一次迭代中,你应该把这个项加到总的总和上

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

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

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

换句话说

sum = sum + (sum * (x / (j)));
不等于

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

由于
sum
的值取决于
sum
的上一个值,因此您无法消除该变量。

这不是一个样式差异,您只是在进行一个根本不同的计算。是的:
sum
不再是一个和(
result
是).好的,我想我现在明白了!我搔搔头试图理解你想说的话;最终我拿起笔,用两种方法迭代了几次代数的样子。是的,它们是不同的:在我原来的方法中,加法的存在会复合到未来的迭代中。我想这里给我的教训是:分解迭代!分别迭代一个项,然后分别求和。两个不同的路由需要两个不同的变量。谢谢!:)(自我提醒)基本上,它最初对我来说是隐藏的,因为我一直严格地向前看序列;在这种情况下,是的,我可以通过复制当前数据并将一个添加到调整后的另一个来创建一个总结序列。但我错过的是向后看序列,因此我错过了添加将如何改变一切。
sum = sum * (x / (j));
result = result + sum;