用于添加数字的Java程序

Pra*_*kar 0 java

给定num = 38,过程如下:3 + 8 = 11,1 + 1 = 2.由于2只有一位数,所以返回它.但我的功能返回11?我的逻辑出了什么问题?救命 !!

public class Solution {
    public int addDigits(int num) {
    int result=doSum(num);
    return result;
    }

    public static int doSum(int num){
        int sum=0,digit;
        while(num!=0){
            digit=num%10;
            sum+=digit;
            num=num/10;
        }
        if(sum/10!=0){
            doSum(sum);
        }
        return sum;
    }
}
Run Code Online (Sandbox Code Playgroud)

Amr*_*Amr 5

if(sum/10!=0){
    doSum(sum);
}
Run Code Online (Sandbox Code Playgroud)

这就是你的逻辑错误.您以递归方式调用doSum()新总和,但不对结果执行任何操作.所以你需要将其更改为:

if(sum/10!=0){
   sum = doSum(sum);
}
Run Code Online (Sandbox Code Playgroud)