在线编译器 C

#include <stdio.h> int sum_digits(int n) { if (n == 0) { return 0; } int sum = 0; return sum + sum_digits(n / 10); } int main() { printf("%d",sum_digits(123); return 0; }
这段代码试图计算一个整数的各位数字之和,但存在两个问题:一是递归函数没有正确累加当前位的数字,二是主函数中调用时缺少一个右括号。

- 在 `sum_digits` 函数中,你定义了变量 `sum` 并初始化为 0,但之后没有把当前数字的个位(即 `n % 10`)加到 `sum` 上就直接返回了 `sum + sum_digits(n / 10)`。这样 `sum` 始终为 0,导致结果错误。你需要考虑如何提取当前最低位的数字并累加。

- 主函数中 `printf` 这一行缺少一个右括号,导致编译错误。检查括号是否成对出现。