Viết hàm JavaScript tính giai thừa của số n sử dụng phương pháp đệ quy.
Giải pháp
Sử dụng đệ quy đuôi (tail recursion) với tham số tích lũy res để tối ưu bộ nhớ.
const num = 9;
const recursiveFactorial = (num, res = 1) => {
if (num) {
return recursiveFactorial(num - 1, res * num);
}
return res;
};
// Test các trường hợp
console.log(recursiveFactorial(num)); // 9! = 362880
console.log(recursiveFactorial(6)); // 6! = 720
console.log(recursiveFactorial(10)); // 10! = 3628800
console.log(recursiveFactorial(5)); // 5! = 120
console.log(recursiveFactorial(13)); // 13! = 6227020800Kết quả
362880
720
3628800
120
6227020800Cơ chế: n! = n × (n-1) × ... × 1. Hàm gọi chính nó với num-1 và tích lũy kết quả trong res cho đến khi num bằng 0.
Lưu ý: JavaScript không tối ưu đệ quy đuôi (TCO) ở hầu hết engine, nên với số lớn có thể gây tràn stack. Cân nhắc dùng vòng lặp cho ứng dụng thực tế.