Đệ quy tính tổng chữ số: sum(n) = n%10 + sum(n/10), dừng khi n==0.
Ví dụ minh họa
using System;
class Program
{
static int SumDigits(int n)
{
if (n == 0) return 0;
// Xử lý số âm
n = Math.Abs(n);
return (n % 10) + SumDigits(n / 10);
}
static void Main()
{
int[] testNumbers = { 22, 12345, -987, 0, 1000 };
foreach (int n in testNumbers)
{
int sum = SumDigits(n);
Console.WriteLine($"Số: {n,6} → Tổng chữ số: {sum}");
}
}
}
Kết quả đầu ra
Số: 22 → Tổng chữ số: 4 Số: 12345 → Tổng chữ số: 15 Số: -987 → Tổng chữ số: 24 Số: 0 → Tổng chữ số: 0 Số: 1000 → Tổng chữ số: 1
Phiên bản lặp (Iterative - hiệu quả hơn)
static int SumDigitsIterative(int n)
{
n = Math.Abs(n);
int sum = 0;
while (n > 0)
{
sum += n % 10;
n /= 10;
}
return sum;
}
Lưu ý: Đệ quy gây stack overflow với số rất lớn (nhiều chữ số). Phiên bản lặp an toàn hơn. Xử lý số âm bằng Math.Abs.