为什么我获得欧拉数字的方法,返回无穷大



im试图使用JavaScript获得Euler号码。

在这里我的代码,返回无穷大:

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);

所以,我无法理解它为什么返回无限。

此代码返回无穷大,因为j的初始值是0。特别是,您将1/factorial(0)添加到efactorial(0)返回什么?JavaScript将1/0评估为Infinity,因此在第一次迭代后,e已经是Infinity,并且任何后续迭代都会增加更多。

要解决此问题,只需在1个启动j

编辑:瓦桑有一个很好的观点,那就是0!(0阶乘(实际评估为1。对于更好的修复,您应该重新评估factorial功能。

,因为您的第一个值为j。您添加的任何内容仍然是无限

以下是您在10个迭代中的每一个中的J值

无穷大,1,0.5,0.333333333333333,0.25,0.2,0.1666666666666666,0.14285714285714285,0.125,0.111111111111111,

最新更新