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

Tích hai số bằng đệ quy trong C#

Nhân hai số bằng đệ quy: a × b = a + a × (b-1) với điều kiện dừng b = 0. Tương tự cộng lặp b lần.

Ví dụ cơ bản

using System;

class Program
{
    static int MultiplyRecursive(int a, int b)
    {
        // Đảm bảo b >= 0 để tránh đệ quy vô hạn
        if (b < 0) return -MultiplyRecursive(a, -b);
        if (b == 0) return 0;
        
        return a + MultiplyRecursive(a, b - 1);
    }
    
    static void Main()
    {
        int val1 = 10, val2 = 20;
        int result = MultiplyRecursive(val1, val2);
        Console.WriteLine($"{val1} × {val2} = {result}");
    }
}

Kết quả đầu ra

10 × 20 = 200

Tối ưu: Đệ quy đuôi (Tail Recursion) - C# không tối ưu tự động

static int MultiplyTailRecursive(int a, int b, int acc = 0)
{
    if (b == 0) return acc;
    return MultiplyTailRecursive(a, b - 1, acc + a);
}

Lưu ý: Đệ quy nhân chỉ mang tính học tập. Dùng toán tử * cho production. Cẩn stack overflow với b lớn (> ~10000).