题目

用递归把整数各位数字求和

思路

本题用递归求整数各位数字之和。

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