int DigitSum(int n) { if (n == 0)//如果 n 为 0,则停止递归,因为没有更多的数字可以添加。 { return 0; } else { return n % 10 + DigitSum(n / 10); } /* 假设输入123,第一次递归,return3 和DigitSum(12) DigitSum(12) return 2和DigitSum(1) DigitSum() return 1和DigitSum(0) DigitSum(0),因为n=0,所以递归结束 */ } int main() { int n; scanf("%d", &n); if (n < 0) { printf("输入的数要大于0"); return 0; } int ret = DigitSum(n); printf("%d", ret); return 0; }