Нахождение суммы всех цифр числа при помощи рекурсии

Описание задачи

Программа принимает на вход число и при помощи рекурсии находит сумму всех цифр, из которых это число состоит.

Решение задачи

  1. Создадим пустой список, в который будем записывать цифры данного числа.
  2. Определим рекурсивную функцию, которая будет принимать в качестве аргумента число.
  3. Далее, принимаем от пользователя число и передаем его этой функции в качестве аргумента.
  4. В рекурсивной функции базовое условие определено как равенство аргумента нулю. В этом случае программа выводит сформированный список, состоящий из всех цифр числа.
  5. В противном случае в список добавляется остаток от деления аргумента на 10, а затем снова вызывается эта же функция, в которую в качестве аргумента передается результат целочисленного деления на 10.
  6. Затем находится сумма элементов списка при помощи встроенной функции Python, а результат выводится на экран. Вместо встроенной в Python функции также можно использовать код, который мы приводили в этом же разделе ранее.
  7. Также для сравнения можно посмотреть, как мы решали ранее эту же задачу при помощи итераций.

Исходный код

Ниже дан исходный код, который вычисляет сумму всех цифр данного числа с использованием рекурсии. Результаты работы программы также даны ниже.

l = []
def sum_digits(b):
    if (b == 0):
        return l
    dig = b % 10
    l.append(dig)
    sum_digits(b // 10)
n = int(input("Введите число: "))
sum_digits(n)
print(sum(l))

Объяснение работы программы

  1. Создается переменная l, которая инициируется пустым списком.
  2. Определяется рекурсивная функция sum_digits(), принимающая в качестве аргумента число.
  3. В самой функции определяется базовое условие рекурсии. Оно состоит в равенстве аргумента функции 0. В этом случае функция возвращает сформированный рекурсивным образом список l.
  4. В противном случае в список добавляется остаток от деления аргумента на 10, а затем снова вызывается эта же функция, в которую в качестве аргумента передается результат целочисленного деления на 10.
  5. Далее мы вызываем функцию sum_digits(), а в качестве аргумента передаем введенное пользователем число n.
  6. Затем вычисленная сумма всех цифр числа выводится на экран.

Результаты работы программы

Пример 1:
Введите число: 135
9
 
Пример 2:
Введите число: 546
15