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

Chương trình C# tính giai thừa (factorial) bằng đệ quy (recursion)

Giai thừa n! = n × (n-1) × ... × 1. Tính bằng hàm đệ quy CheckFact(n).

Logic đệ quy:

  • Base case: n == 1 return 1 (cũng xử lý n == 0 return 1).
  • Recursive case: return n * CheckFact(n - 1).

Trace n=5:

5 * CheckFact(4)
  4 * CheckFact(3)
    3 * CheckFact(2)
      2 * CheckFact(1) → 1
      = 2
    = 6
  = 24
= 120

Ví dụ

using System;

namespace Demo
{
    class Factorial
    {
        public int CheckFact(int n)
        {
            if (n <= 1) return 1; // Base case: 0! = 1! = 1
            return n * CheckFact(n - 1); // Recursive case
        }
        
        static void Main(string[] args)
        {
            int value = 9;
            Factorial fact = new Factorial();
            int ret = fact.CheckFact(value);
            Console.WriteLine("Value is: {0}", ret); // 362880
            Console.ReadLine();
        }
    }
}

Kết quả

Value is: 362880

Lưu ý: Đệ quy gây stack overflow nếu n quá lớn. Dùng vòng lặp (iterative) cho hiệu năng và an toàn stack. long chứa max 20!, BigInteger cho lớn hơn.