给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。
例如:
给出 num = 38。
相加的过程如下:3 + 8 = 11,1 + 1 = 2。因为 2 只剩下一个数字,所以返回 2。
public int addDigits(int num) {
// Write your code here
int sum=0;
while(num!=0) {
//取余10得到个位上的值,累加
sum+= num%10;
//原来的十位变个位
num = num/10;
}
if(sum<10){
return sum;
}
//大于10则进行递归
return addDigits(sum);
}
这个题递归效率是可以的,但是其他的可能递归解决不了,因为递归是很耗性能的。