在线编译器 C

#include <stdio.h> int sum_digits(int n) { if (n == 0) { return 0; }; return n % 10 + sum_digits(n / 10); } int main() { printf("%d",sum_digits(123)); return 0; }
这段代码定义了一个递归函数 `sum_digits`,用来计算一个整数各位数字之和。在 `main` 函数中,它计算了 123 的各位数字之和并输出结果。

- 递归的终止条件是 `n == 0` 时返回 0,但这里有一个小问题:如果输入的数字本身就是 0,函数会正确返回 0。但如果输入的是负数,递归会陷入无限循环,因为 `n / 10` 在负数时不会趋向于 0。
- 另外,代码中在 `return 0;` 后面多了一个分号,虽然语法上允许,但通常不这样写,可以去掉。