Описание задачи
Программа принимает на вход список и вычисляет сумму его элементов, используя рекурсию.
Решение задачи
- Определяем рекурсивную функцию, которая в качестве аргументов принимает список и его длину.
- Принимаем длину цикла и записываем ее в отдельную переменную.
- Создаем новую переменную и инициируем ее пустым списком.
- Для добавления элементов в список используем цикл.
- Передаем сформированный список и его длину в рекурсивную функцию в качестве аргументов.
- В качестве базы рекурсии принимается условие равенства длины списка
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