题目

编写递归函数计算一个非负整数各位十进制数字之和。

输入格式:一行输入一个非负整数 n。

输出格式:输出一个整数,表示该数各位数字相加的总和,末尾换行。

数据范围与约定:0 ≤ n ≤ 2×109。

思路与算法

1. 递归拆解逻辑
递归基:当 n < 10 时,只有一位数字,直接返回 n;
递推步:多位数之和等于当前个位数 n % 10 加上高位剩余数字的和 sumDigits(n / 10)。

2. 调用深度
32 位整数最多 10 位,递归层数不超过 10 层,调用栈开销极小。

完整程序

import java.util.Scanner;

public class Main {
    // 递归计算非负整数各位十进制数字之和
    public static int sumDigits(long n) {
        if (n < 10) {
            return (int) n;
        }
        return (int) (n % 10) + sumDigits(n / 10);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        System.out.println(sumDigits(n));
    }
}

运行示例

输入:

1234

输出:

10