题意
给你一个数,把所有位置的数字相加,然后如果大于9,则继续相加,一直到结果是一个个位数
递归
递归主要就是模拟题意得过程
class Solution {
public:
int addDigits(int num) {
int sum = 0;
while (num > 0) {
sum += num%10;
num /= 10;
}
if(sum < 10) return sum;
else addDigits(sum);
}
};
非递归
class Solution {
public:
int addDigits(int num) {
return (num - 1) % 9 + 1;
}
};
非递归的解法很简单,网上有两种求解的思路,一种是找规律,也就是列出从0到19,发现是有循环的。
还有一种解释我觉得比较恰当一点,就是出自北风其人的解释
不过大部分人还是用了 找规律 方法,其实在没有主意的时候,找找规律也是一个方向