理解为什么我的 for 循环无法近似 e


e 可以用公式 e = 1 + (1/1!( + (1

/2!( + (1/3!( 近似... + (1/n!我正在尝试使用 for 循环来接受用户将 n 设置为的任何整数。程序应使用上述公式从 (1/1!( + ....(1/n!并输出结果。

嵌套的 for 循环计算 n 的阶乘(单独测试它并且它有效(,定义的变量 frac 将阶乘放入 1/(阶乘的答案(的分数中。我将值存储到变量 e 中,每次迭代完成时,它都应该将新分数添加到旧值中。我不明白我的循环有什么问题,他们没有给出正确的答案。

System.out.println("Enter an integer to show the result of 
approximating e using n number of terms.");
int n=scan.nextInt();
double e=1;
double result=1;
for(int i=1; n>=i; n=(n-1))
{
    for(int l=1; l<=n; l++)
            {
                result=result*l;
            }
    double frac=(1/result);
    e=e+frac;
}
System.out.println(e);

当我输入整数 7 时输出为 n = 1.0001986906956286

你不需要整个内部循环。您所需要的只是result *= i.

for (int i = 1; i <= n; i++)
{
    result *= i;
    double frac = (1 / result);
    e += frac;
}

这是我刚刚拼凑的一个JavaScript版本:

function init() {
  const elem = document.getElementById('eapprox');
  let eapprox = 1;
  const n = 15;
  let frac = 1;
  for (var i = 1; i <= n; ++i) {
    frac /= i;
    eapprox += frac;
  }
  elem.textContent = eapprox;
}

这将产生 2.718281828458995。在这里普伦克: http://plnkr.co/edit/OgXbr36dKce21urHH1Ge?p=preview

相关内容

  • 没有找到相关文章

最新更新