给定一个正整数num ,反复将各个位上的数字相加,直到结果为一位数

示例:
输入: 38
输出: 2
解释:各位相加的过程为:3 + 8= 11, 1 + 1=2。由于2是一位数,所以返回2。

可以先将输入的数的各个位数字进行相加,然后对其结果再进行像初始输入的数的一样的操作,直到最后各个位的数字的和小于10。
 private static int count(int num) {
        int sum = 0;
        if(num < 0){
            return -1;  //如果不是一个正数
        }
        if(num == 0){
            return 0;
        }
        while (sum == 0 || sum >= 10) {  //如果退出第一层循环说明sum小于10
            if (sum != 0) {  //避免第一次进入
                num = sum;
                sum = 0;
            }
            while (num != 0) {   //求每次各个位数字的和
                sum += num % 10;
                num = num / 10;
            }
        }
        return sum;
    }

例如:输入99

结果:

 

猜你喜欢

转载自www.cnblogs.com/128-cdy/p/12483634.html