Задать вопрос
@neulwert

Как найти сумму всех цифр числа?

Вот пример, если подается число 942 в функцию, то программа должна вернуть сумму всех цифр полученных чисел, пока не останется одна цифра:
942 --> 9 + 4 + 2 = 15 --> 1 + 5 = 6
На входе подаются только положительные числа.

Вот мой код, я хочу узнать почему он не работает и возвращает мне None:
def digital_root(n):
    result = 0
    for x in str(n):
        result +=int(x)
    if len(str(result))>1:
        digital_root(result)
    elif len(str(result))==1:
        return result

print(digital_root(942))


Я сделал не идеальный код, знаю, но мне не нужны другие варианты, прошу сказать почему он не работает и как это исправить.
  • Вопрос задан
  • 187 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 4
milssky
@milssky
Координатор племени фиолетовых обезьянок
А вам достаточно подумать, куда попадет результат рекурсивного вызова. И вы уверены, что нужен elif?)
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Комментировать
@o5a
Частая ошибка в неработающих рекурсивных функциях - забывают, что она должна вернуть значение, а не просто вызваться. Это как раз тот случай, посмотрите на строку digital_root(result)
Ответ написан
Комментировать
@RomirosR
def digital_root(n):
    return n if n < 10 else digital_root(sum(int(i) for i in str(n)))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы