Hỏi về đệ qui trong c

int tong(int n)
{
    if(n==0)
        return 0;
        int kt=n%10;
    if(kt%3==0)
        return kt+tong(n/10);
        else
            return tong(n/10);
}
int tong2(int n)
{
    if(n==0)
        return 0;
    int kt=n%10;
    (kt%3==0) ? kt+tong2(n/10):(tong2(n/10));
}

cho em hỏi cái tong2 của em là đệ quy sao không chạy được
ví dụ:1390…3 và 9 chia hết cho 3 và 3+9=12 => kết quả trả về 12
p/s:sao up vào đây bị bay mất mấy cái tab dòng rồi ạ

  • Format lại code bạn ơi. Thêm 3 dấu ` vào đầu và cuối code.
  • Bạn viết ngược đệ quy cuối.

Phải viết lại thành

(kt%3!=0) ? kt+tong2(n/10):(tong2(n/10));
1 Like

return dau roi ban?

1 Like

Câu cuối viết thiếu return :slight_smile:
Mà câu đó nên rút số hạng đó ra.

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