Q:
Given a non-negative integer
num
, repeatedly add all its digits until the result has only one digit.
For example:
Given num = 38
, the process is like: 3 + 8 = 11
, 1 + 1 = 2
. Since 2
has only one digit, return it.
问题:给定一个非负整数,重复将其所有位上的数字相加,直至结果为一位数,返回该数。
思路一:使用递归和循环将数的每位相加,直至结果为个位数。
AC解(22.46%):
public int addDigits(int num) {
if(num<10) return num;
else{
int x=0;
while(num!=0){
x+=num%10;
num/=10;
}
return addDigits(x);
}
}
思路二:将所有位上的数相加,其结果就相当于该数对9取模(除0外)。(22.46%)
public int addDigits(int num) {
if(num==0) return 0;
else return num%9==0?9:num%9;
}