在线编译器 C

#include <stdio.h> int digit_sum(unsigned int n) { int temp=0; if(n==0) { return n; } if(n<10) { return n; } while(n!=0) { temp=temp+n%10; n=n/10; } return temp; }
这段代码定义了一个函数 `digit_sum`,用来计算一个无符号整数的各位数字之和。它先处理了 n 为 0 或小于 10 的特殊情况,然后通过循环不断取末位数字累加,直到 n 变为 0。

- 代码中前两个 `if` 判断有些重复。当 n 为 0 时,第一个 `if` 返回 0,但第二个 `if` 判断 n<10 也会包含 n=0 的情况,实际上第一个 `if` 是多余的。你可以思考如何合并或简化这两个条件。
- 函数的功能是计算数字和,但目前的实现完全用循环完成了,没有用到递归。题目要求可能是让你用递归方式实现,而你的代码是迭代方式。检查一下任务是否要求递归,如果是,你需要修改为函数内部调用自身的形式。