一、运行结果
二、题目
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
示例 1:
输入: num = 38
输出: 2
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。
示例 2:
输入: num = 0
输出: 0
提示: 0 <= num <= 231 - 1
三、思路
在sum函数中计算当前数字各位相加的结果并返回,判断相加结果是否为个位数,若不为各位数,则继续调用sum方法进行计算各位和,直至结果为不大于10。
四、代码
class Solution {
public:
int addDigits(int num) {
int ans = num;
while(num >= 10){
ans = sum(num);
num = ans; //将相加的结果重新赋给num进行循环判断
}
return ans;
}
int sum(int num){ //处理一个各位相加,返回相加的结果
int ret = 0;
while(num != 0){
ret += num % 10;
num /= 10;
}
return ret;
}
};