fadxo20 Ответов: 3

Как вывести сумму всех цифр заданного числа с помощью рекурсивной функции


попытка написать рекурсивную функцию в Python, чтобы найти сумму цифр числа. Назовите функцию sum_of_digits. моя функция должна использовать рекурсивный алгоритм. я хочу, чтобы функция выводила сумму всех цифр данного числа. Например, sum_of_digits(343) должен иметь выход 10.



я знаю, что мы должны добавить цикл if, чтобы он был рекурсивным

Результат, которого я пытаюсь достичь: 10

Что я уже пробовал:

<pre>def sum_of_digits(n):
    if n ==  :
        return n
    else:
        return (n % 10) + sum_of_digits(n // 10)
sum_of_digits(343)


вот что я реализовал. я не знаю, с чем сравнить "Н"? я застрял на Первом если

Patrice T

Где ты застрял ?

phil.o

Сначала сделайте это вручную с помощью ручки и листа бумаги. Вы никогда не научитесь строить алгоритм, прося других людей сделать это за вас.

3 Ответов

Рейтинг:
2

fadxo20

def sum_of_digits(n):
    if n ==  :
        return n
    else:
        return (n % 10) + sum_of_digits(n // 10)
sum_of_digits(343)


вот что я реализовал. я не знаю, с чем сравнить "Н"? я застрял на Первом если


Richard MacCutchan

    if n ==  0:
        return n

Рейтинг:
1

CPallini

Подсказка: на каждом шаге вы можете использовать оператор по модулю (например, n % 10 ) чтобы получить последнюю цифру числа (остановитесь, если это так 0) и добавить его к сумме. Затем назовите следующий шаг проходящим ( n // 10 ).


Richard MacCutchan

+5; я не мог понять этого, пока не увидел ваше предложение.

CPallini

Я должен признать, что рекурсия все еще не приходит ко мне естественно.

Рейтинг:
0

Patrice T

Еще один способ закончить цикл-это:

if n < 10  :
    return n

Примечание: использование рекурсивной функции хорошо только при изучении рекурсии. Для такой задачи цикл в функции использует не больше кода, быстрее во время выполнения и использует меньше ресурсов.


CPallini

Действительно. У меня 5.

Patrice T

Спасибо