Add Digits

# Challenge name: Add Digits
#
# Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
#
# Example:
#
# Input: 38
# Output: 2
# Explanation: 3 + 8 = 11, 1 + 1 = 2.

#
# Approach: Mathematical: Digital Root
#
# https://en.wikipedia.org/wiki/Digital_root
# https://brilliant.org/wiki/digital-root/
#

#
# Complexity Analysis
#
# Time Complexity: O(1).
# Space Complexity: O(1).

def add_digits(num)
  return 0 if num == 0
  return 9 if num % 9 == 0

  num % 9
end

puts(add_digits(38))
# # => 2

puts(add_digits(284))
# # => 5