在线编译器 C

#include <stdio.h> int sum_digits(int n){ if(n==1){ return n; }sum_digits(n-1); } int main() { int m,sum; scanf("%d",&m); sum=sum_digits(m); printf("%d",sum); return 0; }
这段代码试图计算一个数字的各位数字之和,但实现方式有误。当前函数 `sum_digits` 实际上是在做从 n 递减到 1 的递归,而不是处理数字的各位。

- 函数 `sum_digits` 的递归逻辑不对:它没有将数字拆分为个位和剩余部分,而是直接对 n-1 递归,这会导致计算的是 1 到 n 的累加和,而不是各位数字之和。
- 递归的终止条件 `n==1` 也不正确,因为数字的各位数字之和应该处理到数字为 0 时停止,并且需要提取个位数字(通过 n%10)和剩余部分(通过 n/10)。