给定一个非负整数 num,反复将其各位数字相加,直到结果只剩一位数为止。

例如,给定 num = 38,过程如下:3 + 8 = 111 + 1 = 2。由于 2 只有一位,返回它。

进阶:
能否在 O(1) 时间内不使用任何循环或递归来实现?

题目暗示这道题必然存在某种数学规律。写出几个数字找一找:

class Solution {
public:
    int addDigits(int num) {
        if(num<10)return num;
	num%=9;
	if(num ==0 )return 9;
        return num;
    }
};

这道题的知识点是 Digital root,详见 https://en.wikipedia.org/wiki/Digital_root