【发布时间】:2018-03-12 18:16:41
【问题描述】:
e 可以使用公式 e = 1 + (1/1!) + (1/2!) + (1/3!)... + (1/n!) 来近似。我正在尝试使用 for 循环来接受用户将 n 设置为的任何整数。程序应该使用上面的公式从 (1/1!) + .... (1/n!) 逼近 e 并输出结果。
嵌套的 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
【问题讨论】:
-
这不是javascript
-
这不是你计算阶乘的方式。当 i = 3 时,“结果”最终为 1 * 1 * 2 * 1 * 2 * 3 = 12,因为在 i 的每次迭代后您不会重置为 1。参考this question。
标签: java for-loop nested-loops eulers-number