题目
用递归把整数各位数字求和
思路
本题用递归求整数各位数字之和。
若 n<10 直接返回 n;否则返回个位 n%10 加上 sumDigits(n/10)。负数可先取绝对值再递归。
解题分析
递归:个位 + digit_sum(n/10),基线 n==0 返回 0。负数按题目处理,可先取绝对值。
完整程序
#include <stdio.h>
static int digit_sum(int n)
{
if (n == 0) {
return 0;
}
return n % 10 + digit_sum(n / 10);
}
int main(void)
{
int n;
if (scanf("%d", &n) != 1 || n < 0) {
return 1;
}
printf("%d\n", digit_sum(n));
return 0;
}
运行示例
输入:
1234输出:
10