Описание задачи
Программа принимает на вход число и при помощи рекурсии находит сумму всех цифр, из которых это число состоит.
Решение задачи
- Создадим пустой список, в который будем записывать цифры данного числа.
- Определим рекурсивную функцию, которая будет принимать в качестве аргумента число.
- Далее, принимаем от пользователя число и передаем его этой функции в качестве аргумента.
- В рекурсивной функции базовое условие определено как равенство аргумента нулю. В этом случае программа выводит сформированный список, состоящий из всех цифр числа.
- В противном случае в список добавляется остаток от деления аргумента на
10
, а затем снова вызывается эта же функция, в которую в качестве аргумента передается результат целочисленного деления на10
. - Затем находится сумма элементов списка при помощи встроенной функции Python, а результат выводится на экран. Вместо встроенной в Python функции также можно использовать код, который мы приводили в этом же разделе ранее.
- Также для сравнения можно посмотреть, как мы решали ранее эту же задачу при помощи итераций.
Исходный код
Ниже дан исходный код, который вычисляет сумму всех цифр данного числа с использованием рекурсии. Результаты работы программы также даны ниже.
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))
Объяснение работы программы
- Создается переменная
l
, которая инициируется пустым списком. - Определяется рекурсивная функция
sum_digits()
, принимающая в качестве аргумента число. - В самой функции определяется базовое условие рекурсии. Оно состоит в равенстве аргумента функции
0
. В этом случае функция возвращает сформированный рекурсивным образом списокl
. - В противном случае в список добавляется остаток от деления аргумента на
10
, а затем снова вызывается эта же функция, в которую в качестве аргумента передается результат целочисленного деления на10
. - Далее мы вызываем функцию
sum_digits()
, а в качестве аргумента передаем введенное пользователем числоn
. - Затем вычисленная сумма всех цифр числа выводится на экран.
Результаты работы программы
Пример 1: Введите число: 135 9 Пример 2: Введите число: 546 15