三种方法实现阶乘

三种实现阶乘的方法

方法1

function factorialize(num) {
  // 如果num小于1,则终止
  if (num<0) {
    return -1;
  } else if (num === 0 || num === 1) {
    // num=0或num=1,返回1,这个是定理
    return 1;
  } else{
    return num * factorialize(num-1);
  }
}
factorialize(5);

第一个方法及其简单,else语句中是重复调用函数。但是这种方法好像有内存溢出的风险;

方法2:for循环

function factorialize(num) {
  if (num < 0) {
    return -1;
  } else if (num===0 || num === 1) {
    return 1;
  } else {
    for (var i = num -1; i >= 1; i--) {
      num *= i;
    }
  }
  return num;
}

方法3:while循环

function factorialize(num) {
  var result = num;
  if (num < 1) {
    return -1;
  } else if (num===0 || num===1) {
    return 1;
  } else {
    while (num > 1) {
      num--;
      result *= num;
    }
  }
  return result;
}

你可能感兴趣的:(三种方法实现阶乘)