Nhờ check code tính giai thừa của 1 số trong Javascript

Hi all, e đang học cách tính giai thừa của 1 số bằng while loop, code 1 là e làm, code 2 là cách giải của người ta, 2 cái đều ra kết quả. Nhưng mọi người cho e hỏi ở code 1, e viết như vậy có ổn không ạ, hay vì trường hợp này hên nên ra đúng, nếu dùng để giải bài khác thì k được. Vì ở code 2 có thêm phần if (num === 0 || num === 1) { return 1;} . Thanks :slight_smile:

function factorialize(num) {
   // code 1
var sum = 1;
var i = 1;
while(i <= num) {
   sum *= i;
   i++;
}
   return sum;
//code 2
var result = num;
if (num === 0 || num === 1) {
   return 1;
}
while(num > 1) {
   num--;
   result *= num;
}
   return result;
}

Cách 1 là bạn tính giai thừa từ 1 -> n, cách 2 là tính giai thừa từ n -> 0. Cách 1 so với cách 2 thì phải tốn bộ nhớ lưu thêm 1 biến i với chưa có trường hợp 0!. 0! cũng = 1

đúng là chưa có trường hợp 0! nhưng sao nếu gọi factorialize(0) thì vẫn ra 1 v bạn

tại bạn gán s = 1 ở đầu rồi nên nó vẫn ra 1

à, hiểu. V còn tính giai thừa từ 0->n vs từ n -> 0 thì cũng ra kết quả như nhau thôi phải k b

ukm đúng rồi. nhưng cách từ 0 -> n thì phải tạo thêm 1 biến nữa

ok, thanks bạn nhé :smiley:

Sẵn đây cho mình hỏi cái này ngoài lề topic tí nha. Ternary operator í bạn, khi nào thì dùng ? : , khi nào thì dùng if v, hay mún xài nào thì xài. Vs cái đó dùng trong C hay trong JS có dùng tới hông

2 cái đấy hầu như là giống nhau. khi nào dùng được thì dùng thôi :v mà dùng cái ? : thì nhìn nó có vẻ cao siêu hơn 1 tí. cái ? : cũng giống cái if hầu như ngôn ngữ nào cũng dùng được

uhm, hiểu rồi, thanks lần nữa nhé :))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?