给定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)
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)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |