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

#include <stdio.h> int sum_digits(int n) { if (n == 0) { return 0; }; return sum_digits(n) % 10 + sum_digits(n / 10); } int main() { printf("%d",sum_digits(123); return 0; }
这段代码试图计算一个整数的各位数字之和,但存在两个主要问题。

首先,在 `sum_digits` 函数中,递归调用时传入了 `n` 本身,而不是 `n/10` 的结果,这会导致无限递归,因为参数没有向终止条件靠近。

其次,`main` 函数中 `printf` 的括号不匹配,缺少一个右括号。

- 检查递归函数中参数的变化:每次递归调用应该让参数逐渐接近终止条件(比如 `n==0`),而不是保持不变。
- 检查 `printf` 语句的括号是否成对出现,确保每个左括号都有对应的右括号。