Leetcode数字根

时间:2016-02-04 22:31:09

标签: java

我正在研究一个leetcode: 给定非负整数num,重复添加其所有数字,直到结果只有一位数。

例如:

给定num = 38,过程如下:3 + 8 = 11,1 + 1 = 2.由于2只有一位数,所以返回它。

我的代码如下,但当输入为20时它返回1.我无法弄清楚为什么盯着它看20分钟,任何人都可以帮忙?

非常感谢!

public class Solution {
    public int addDigits(int num) {
        if(num%10 == num){ //20%10 = 0//2%10 == 2
            return num;
        }
        int sum = 0;
        while(num%10 != num){
            sum += (num%10); //sum = 0
            num /= num; //num =2
        }
        return addDigits(sum + num%10);// 0+2

    }
}

1 个答案:

答案 0 :(得分:1)

num /= num;总是等于1.(除非num = 0,否则你不想除以零 - 感谢John Bollinger) sum += (num%10); num=20暗示20 =20%10 = 0。{。} 将这两个结果添加到0+1 = 1。 1是一位数字,并返回。

也许你的意思是:

while(num%10 != num){
        sum += (num%10); //sum = 0
        num /= 10;  //I CHANGED THIS LINE ONLY
    }