FCC - 253 計算一個整數的階乘

weixin_34413065發表於2017-07-30

計算一個整數的階乘

如果用字母n來代表一個整數,階乘代表著所有小於或等於n的整數的乘積。

階乘通常簡寫成 n!

例如: 5! = 1 * 2 * 3 * 4 * 5 = 120

剛拿到題目我想到了遞迴,先寫了如下的程式碼:

function factorialize(num) {
  // 請把你的程式碼寫在這裡
     for(var i=num;i>1;i--){
        return num*factorialize(num-1);
      }
      return num;
     }

factorialize(5);

這麼寫對於傳值5進去是沒有問題的,但是要考慮到0的階乘是1,所以應該寫成:

function factorialize(num) {
  // 請把你的程式碼寫在這裡
  if(num===0){return 1;}
  else if(num>0)
  {
  for(var i=num;i>2;i--){
    return num*factorialize(num-1);
  }
  }
  return num;
}

factorialize(5);

這樣才算闖關成功。

後來在網上搜了一下別人的程式碼,摘了兩段覺得比較好的,貼上來學習

function factorial(num) {
    if(num <= 1) {
        return 1;
    } else {
        return num * factorial(num - 1); 
    }
}
function factorialize(num) {
  return num > 1 ? num * factorialize(num-1) : 1;
}

相關文章