Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Giai thừa bằng đệ quy trong JavaScript

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! = 6227020800

Kết quả

362880
720
3628800
120
6227020800

Cơ 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ế.