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

#include <stdio.h> int sum_digits(int n){ int all=0; if(n==1){ return all; }sum_digits(n%10); all+=n; return all; } int main() { int m,sum; scanf("%d",&m); sum=sum_digits(m); printf("%d",sum); return 0; }
这段代码试图计算一个整数的各位数字之和,但实现有误。函数 `sum_digits` 的递归逻辑不正确,导致无法得到正确结果。

- 递归调用 `sum_digits(n%10)` 只传入了最后一位数字,而不是去掉最后一位后的剩余部分。应该传入 `n/10` 来逐步减少数字的位数。
- 变量 `all` 在每次递归调用中都被重置为0,没有正确累加各位数字。递归函数需要将当前位的数字与后续递归的结果相加。