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

Gọi phương thức đệ quy trong C#


Để gọi phương thức C# một cách đệ quy, bạn có thể chạy mã sau. Ví dụ tính giai thừa (factorial) của một số bằng hàm đệ quy Display().

Logic đệ quy

  • Cơ sở: n == 1 trả về 1
  • Đệ quy: n * Display(n - 1)

Ví dụ 5! = 5 × 4 × 3 × 2 × 1 = 120

Ví dụ

using System;

namespace MyApplication
{
    class Factorial
    {
        public int Display(int n)
        {
            if (n == 1)
                return 1;
            else
                return n * Display(n - 1);
        }
        
        static void Main(string[] args)
        {
            int value = 5;
            int ret;
            Factorial fact = new Factorial();
            ret = fact.Display(value);
            Console.WriteLine("Giá trị: {0}", ret);
            Console.ReadLine();
        }
    }
}

Kết quả

Giá trị: 120

Giải thích quy trình

Display(5) = 5 * Display(4)
Display(4) = 4 * Display(3)
Display(3) = 3 * Display(2)
Display(2) = 2 * Display(1)
Display(1) = 1 (base case)

Kết quả: 5 * 4 * 3 * 2 * 1 = 120

Lưu ý quan trọng

  • Base case (trường hợp cơ sở) bắt buộc để tránh stack overflow
  • Mỗi lời gọi đệ quy tốn bộ nhớ stack
  • Đệ quy sâu có thể gây StackOverflowException
  • Cân nhắc dùng vòng lặp (iterative) cho bài toán đơn giản

Phiên bản không đệ quy (Iterative)

public int FactorialIterative(int n)
{
    int result = 1;
    for (int i = 2; i <= n; i++)
        result *= i;
    return result;
}