Нахождение рекурсивной суммы цифр цисла
def digital_root(n):
num_arr = list(str(n))
count = 0
for i in num_arr:
count += int(i)
if len(str(count)) <= 1:
return count
else:
digital_root(count)
Условие задачи:Цифровой корень — это рекурсивная сумма всех цифр числа. Учитывая n, возьмите сумму цифр n. Если это значение имеет более одной цифры, продолжайте уменьшать таким образом, пока не получите однозначное число. Входные данные будут неотрицательным целым числом.
Вроде задачу решил правильно, но тесты не хочет проходить. Посмотрел решение других и их код также решает эту задачу как и мой. Видимо я что-то упустил. Помогите плиз)
Ответы (1 шт):
Автор решения: Глеб
→ Ссылка
Вообще-то, эта задача решается за 25 символов:
def digital_root(n):
return n % 9 or n and 9
Ну или так, рекурсией:
def digital_root(n):
return n if n < 10 else digital_root(sum(map(int, str(n))))