为什么我的方法得到欧拉数,return无穷大?

Why my method to get euler numbers, return infinity?

我正在尝试使用 Javascript 获得欧拉数。

这是我的代码,return无穷大:

function euler_number() {
  for(var j = 0, e = 0; j < 10; j++) {
      e += 1/(factorial(j));
  }
  return e;
}

function factorial(n) {
  if(n <= 1) return n;
  return factorial(n - 1) * n;
}

var r = euler_number();

console.log(r);

所以,我不明白为什么它 return 无穷大。

这段代码return是无穷大,因为j的初始值是0。特别是,您要将 1/factorial(0) 添加到 efactorial(0) return 是什么意思? JavaScript 将 1/0 计算为 Infinity,因此在第一次迭代后,e 已经是 Infinity,任何后续迭代都会添加更多内容。

要解决此问题,只需从 j 1 开始。这应该可以解决问题![​​=22=]

编辑:Vasan 有一个很好的观点,那就是 0! (0 阶乘)actually evaluates to 1。为了更好地解决问题,您应该重新评估 factorial 函数。

因为你的 j 的第一个值是 0。你将它除以零并在 JS 中得到无穷大。无论你添加什么,它仍然是无穷大

以下是您在第 10 次迭代中的每一次的 j 值

无限, 1、 0.5, 0.3333333333333333, 0.25, 0.2, 0.16666666666666666, 0.14285714285714285, 0.125, 0.1111111111111111,