一、问题描述:
给定一个非负整数 num
,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
示例 1:
输入: num = 38
输出: 2
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2
示例 2:
输入: num = 0 输出: 0
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/add-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解题思路及代码:
给定一个数num,sum为个位相加的结果:
如果num<0或num是个位数则直接返回输出;
while(true){
if(sum<10){
return sum;
}
}
如果num>9,假设num=38,则由num%10=8(取余)获取个位数,由num/10=3(取整)获得十位数,将二者相加得到sum=11,继续循环以上步骤,直到获得sum为个位数,退出循环,输出结果。
num=sum;
sum=0;
while(num){
sum+=num%10;
num/=10;
}
三、运行结果: