关于改进(负)阶乘(JavaScript)代码有什么建议吗?

关于改进(负)阶乘(JavaScript)代码有什么建议吗?,javascript,recursion,refactoring,factorial,Javascript,Recursion,Refactoring,Factorial,我在做一个关于编码阶乘n的基本问题: function factorialize(num) { if (num < 0) { return undefined; } else if (num === 0) { return 1; } else { return num * factorialize(num - 1); } } 您也可以使用迭代来完成这项工作(通常,可以递归完成的所有事情也可以迭代完成)。也没有必要将-1提高到数字的幂。如果你只检查它是

我在做一个关于编码阶乘n的基本问题

function factorialize(num) {
  if (num < 0) {
 return undefined;
  } else if (num === 0) {
    return 1;
  }
  else {
    return num * factorialize(num - 1);
  }
}

您也可以使用迭代来完成这项工作(通常,可以递归完成的所有事情也可以迭代完成)。也没有必要将-1提高到数字的幂。如果你只检查它是奇数还是偶数,效率会更高

function factorialize(n){
  var absNum = Math.abs(n);
  var i = 1;
  var factorial = 1;
  while(i <= absNum){
    factorial *= i;
    i += 1;
  }
  if(absNum % 2 === 1 && n < 0){
    return -factorial
  }
  return factorial;
}
函数因式分解(n){
var absNum=Math.abs(n);
var i=1;
var阶乘=1;

虽然(我认为你的问题更多的是关于主题,而不是@hindsmost,谢谢你的提示如果你决定把它贴在那里,请注意你的问题可能需要一些工作。在你的问题变得明显之前,我已经读了三遍。标准的阶乘函数只为正整数定义。它通常是有用和方便的t定义0!=1。除此之外,它还可以通过多种方式扩展。问题是为什么要扩展它,以及该函数对负输入表示什么?最常见的扩展可能是,它是为所有复数定义的,但不是负整数。除了缺少分号之外,这是一个好主意,伙计!
function factorialize(n){
  var absNum = Math.abs(n);
  var i = 1;
  var factorial = 1;
  while(i <= absNum){
    factorial *= i;
    i += 1;
  }
  if(absNum % 2 === 1 && n < 0){
    return -factorial
  }
  return factorial;
}