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

Chương trình C# tính tổng chữ số của một số bằng đệ quy

Đệ quy là kỹ thuật một hàm tự gọi chính nó để giải quyết bài toán con nhỏ hơn. Chương trình dưới đây tính tổng các chữ số của một số nguyên dương bằng đệ quy.

Ý tưởng thuật toán

  • Lấy chữ số cuối cùng: n % 10
  • Loại bỏ chữ số cuối: n / 10
  • Đệ quy cho đến khi n == 0

Mã nguồn

using System;

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            int val = 789;
            Calc cal = new Calc();
            
            Console.WriteLine("Số: {0}", val);
            int result = cal.addFunc(val);
            Console.WriteLine("Tổng chữ số của {0} = {1}", val, result);
            Console.ReadLine();
        }
    }

    class Calc {
        public int addFunc(int val) {
            if (val != 0) {
                return (val % 10 + addFunc(val / 10));
            } else {
                return 0;
            }
        }
    }
}

Kết quả

Số: 789
Tổng chữ số của 789 = 24

Giải thích luồng thực thi (val = 789)

  1. addFunc(789): 789 % 10 = 9 + addFunc(78)
  2. addFunc(78): 78 % 10 = 8 + addFunc(7)
  3. addFunc(7): 7 % 10 = 7 + addFunc(0)
  4. addFunc(0): trả về 0 (điều kiện dừng)
  5. Kết quả: 9 + 8 + 7 + 0 = 24

Lưu ý

  • Đệ quy tốn bộ nhớ stack — cẩn thận với số quá lớn (có thể gây StackOverflow).
  • Có thể viết lặp (iterative) hiệu quả hơn: while (n > 0) { sum += n % 10; n /= 10; }