循环算法代码记录:
public static int addDigits(int num) {
String numString=num+"";
int length=numString.length();
int sum=num;
while(length!=1){
sum=0;
for(int i=0;i<length;i++){
sum+=Integer.parseInt(numString.charAt(i)+"");
}
numString=sum+"";
length=numString.length();
}
return sum;
}
递归算法代码记录:
public int addDigits(int num) {
String numString=num+"";
int length=numString.length();
int sum=0;
while(length>0){
sum+=Integer.parseInt(numString.substring(length-1,length));
length--;
}
if(sum>=10){
return addDigits(sum);
}else{
return sum;
}
}
O( 1 )代码记录:
public static int addDigits(int num) {
return num==0?0:num%9 == 0?9:(num%9);
}
个人解题思路:
循环算法与递归算法都是通过将各个“位数“上的值相加,判断所得结果是否符合要求,如果不符合:
1.递归:将所得结果当成参数传入addDigits(sum);
2.循环:将所得结果值当做被处理参数 numString=sum+”“; length=numString.length();
O( 1 ):找规律? 。。。 我也不知道为什么除9取余就刚好是答案了啊。。。
如果您有更好的解法,欢迎您在留言区补充,感谢!!