描述:
给出一个非负整数 num
,反复的将所有位上的数字相加,直到得到一个一位的整数。
给出 num
= 38。
相加的过程如下:3 + 8 = 11
,1 + 1 = 2
。因为 2
只剩下一个数字,所以返回 2
。
分析:
这道题并不难,只能说用好递归吧。
方法一:
public int addDigits(int num) { // write your code here if(num / 10 == 0){ return num; }else{ return addDigits(sum(num)); } } public int sum(int num){ if(num == 0){ return 0; }else{ return num % 10 + sum(num / 10); } }
方法二:
public int addDigits2(int num) { // write your code here String numStr = num + ""; if (numStr.length() > 1) { int sum = 0; for (int i = 0; i < numStr.length(); i++) { sum += Integer.parseInt(numStr.charAt(i) + ""); num = sum; } return addDigits2(num); } return num; }