258.[LeetCode]Add Digits

题意

给你一个数,把所有位置的数字相加,然后如果大于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,发现是有循环的。
还有一种解释我觉得比较恰当一点,就是出自北风其人的解释
不过大部分人还是用了 找规律 方法,其实在没有主意的时候,找找规律也是一个方向

你可能感兴趣的:(LeetCode)