01/10/2018, 09:44

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

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;
}
Thanh Phong viết 11:49 ngày 01/10/2018

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

Samsikee viết 11:45 ngày 01/10/2018

đú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

Thanh Phong viết 11:55 ngày 01/10/2018

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

Samsikee viết 11:53 ngày 01/10/2018

à, 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

Thanh Phong viết 11:49 ngày 01/10/2018

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

Samsikee viết 12:00 ngày 01/10/2018

ok, thanks bạn nhé

Samsikee viết 11:57 ngày 01/10/2018

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

Thanh Phong viết 12:01 ngày 01/10/2018

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

Samsikee viết 11:55 ngày 01/10/2018

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

Bài liên quan
0