Thắc mắc về công thức trong hàm

e mới học về hàm , mọi người cho e hỏi hàm bên dưới nó tính như thế nào ạ

int sum(int n) {
    int sum=0;
    if(n==0) return 0;
    else
        while (n>0) {
            sum= sum+n%10;
            n=n/10;
        }
    return sum;
}
2 Likes

Có dòng code nào bạn không biết ý nghĩa không?

2 Likes

từ dòng whlie trở xuống mình không hiểu cho lắm

1 Like

Bạn thay số n = 1000 và n = 0 rồi tính tay bình thường ra giấy là đc. Khi n <= 0 thì while ko lặp nữa. Vậy thôi. Nếu lười viết thì bạn đặt cái breakpoint rồi debug.

3 Likes

Giả dụ n = 123

Bước 1: Khởi tạo

sum = 0

Bước 2: Kiểm tra điều kiện

  • Nếu như n bằng 0 thì trả kết quả luôn là 0
  • Trường hợp còn lại thì sẽ vào vòng lặp while (bước 2.1)

Bước 2.1: Vòng lặp

Trong khi mà n > 0 thì chúng ta sẽ:

sum = sum + n % 10

Nghĩa là bạn sẽ lấy 123 chia lấy dư cho 10, sẽ được 12 và dư 3. Như vậy lúc này mình sẽ cộng nó vào sum

sum = sum + 3 = 0 + 3 = 3

Sau đó:

n = n / 10 

Nghĩa là 123 / 10 chia lấy phần nguyên thì mình được 12. Lúc này n = 12

Tương tự:

  • n = 12 => sum = sum + n % 10 => sum = sum + 12 % 10 = 3 + 2 = 5 => n = n / 10 => n = 1
  • n = 1 => sum = sum + n % 10 => sum = sum + 1 % 10 = 5 + 1 = 6 => n = n / 10 => n = 0
  • n = 0: Dừng vòng lặp

Bước 3: Trả về kết quả sum


Bạn cố gắng ghi ra giấy đi nhé. Mong giúp được bạn!

5 Likes

cảm ơn bạn đã giúp mình hiểu rõ hơn

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?