Описание задачи
Программа принимает на вход список и вычисляет сумму его элементов, используя рекурсию.
Решение задачи
- Определяем рекурсивную функцию, которая в качестве аргументов принимает список и его длину.
- Принимаем длину цикла и записываем ее в отдельную переменную.
- Создаем новую переменную и инициируем ее пустым списком.
- Для добавления элементов в список используем цикл.
- Передаем сформированный список и его длину в рекурсивную функцию в качестве аргументов.
- В качестве базы рекурсии принимается условие равенства длины списка
0. Если длина списка равна0, работа функции завершается и она возвращает в качестве результата0. - В противном случае возвращается сумма последнего элемента списка вместе с рекурсивным вызовом функции, где длина массива уменьшена на
1. - Значение рекурсивной функции записывается в отдельную переменную, значение которой потом выводится на экран.
- Конец.
Исходный код
Ниже дан исходный код, который вычисляет сумму элементов списка при помощи рекурсии. Результаты работы программы также даны ниже.
def sum_arr(arr, size):
if (size == 0):
return 0
else:
return arr[size - 1] + sum_arr(arr, size - 1)
n = int(input("Введите длину списка:"))
a = []
for i in range(0, n):
element = int(input("Введите элемент списка:"))
a.append(element)
print("Весь список:")
print(a)
print("Сумма элементов списка равна:")
b = sum_arr(a, n)
print(b)
Объяснение работы программы
- Пользователь вводит число элементов списка, которое сохраняется в отдельной переменной
n. - Далее пользователь
nраз вводит элементы массива, длину которого мы будем вычислять. - Введенные данные добавляются в заранее созданный список
aпри помощи функцииappend(). Для наглядности окончательный список выводится на экран. - Затем введенный список и его длина передаются в качестве аргументов в рекурсивную функцию
sum_arr(), код которой мы написали ранее. - Как только длина списка уменьшается до
0, работа функции прекращается и она перестает вызывать сама себя. - Пока длина списка не равна нулю, функция возвращает сумму последнего элемента списка и вызов самой себя с длиной списка, уменьшенной на
1. - Результат работы функции записывается в переменную
b, которая затем выводится на экран.
Результаты работы программы
Пример 1: Введите длину списка:3 Введите элемент списка:3 Введите элемент списка:56 Введите элемент списка:7 Весь список: [3, 56, 7] Сумма элементов списка равна: 66 Пример 2: Введите длину списка:5 Введите элемент списка:23 Введите элемент списка:45 Введите элемент списка:62 Введите элемент списка:10 Введите элемент списка:56 Весь список: [23, 45, 62, 10, 56] Сумма элементов списка равна: 196

