# 258. Add Digits
###### tags: `leetcode`
## Description
Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.
- Example 1:
>Input: num = 38
Output: 2
>>Explanation: The process is
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
Since 2 has only one digit, return it.
- Example 2:
>Input: num = 0
Output: 0
- Constraints:
>$0 \leq num \leq 2^{31} - 1$
- Follow up: Could you do it without any loop/recursion in O(1) runtime?
## Solution
- The problem can be solved by the iteration, but there are actually some patterns that we can follow
- The only possibilities of the answers are from `0` to `9`. Because we do not have multiple `0` to construct a number, the answer `0` only appears when the original value is `0`. Others can be seen as a loop from `1` to `9`.
```cpp=
if ( num == 0 ) return 0;
return num % 9 == 0 ? 9 : num % 9;
```