Giai thừa n! = n × (n-1) × ... × 1. Tính bằng hàm đệ quy CheckFact(n).
Logic đệ quy:
- Base case:
n == 1return 1 (cũng xử lýn == 0return 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.