Онлайн компилятор C

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

- 递归的终止条件 `n < 10` 是正确的,但注意当 `n` 为负数时,这个条件可能不适用,因为负数小于 10 但并不是个位数。你可以考虑如何处理负数的情况。
- 递归调用 `sum_digits(n / 10)` 对于正数能正确去掉最后一位,但整数除法对负数会向零取整,可能影响结果。思考一下是否需要对负数做特殊处理。