Вычисление суммы элементов списка при помощи рекурсии

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

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

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

  1. Определяем рекурсивную функцию, которая в качестве аргументов принимает список и его длину.
  2. Принимаем длину цикла и записываем ее в отдельную переменную.
  3. Создаем новую переменную и инициируем ее пустым списком.
  4. Для добавления элементов в список используем цикл.
  5. Передаем сформированный список и его длину в рекурсивную функцию в качестве аргументов.
  6. В качестве базы рекурсии принимается условие равенства длины списка 0 . Если длина списка равна 0, работа функции завершается и она возвращает в качестве результата 0.
  7. В противном случае возвращается сумма последнего элемента списка вместе с рекурсивным вызовом функции, где длина массива уменьшена на 1.
  8. Значение рекурсивной функции записывается в отдельную переменную, значение которой потом выводится на экран.
  9. Конец.

Исходный код

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

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)

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

  1. Пользователь вводит число элементов списка, которое сохраняется в отдельной переменной n.
  2. Далее пользователь n раз вводит элементы массива, длину которого мы будем вычислять.
  3. Введенные данные добавляются в заранее созданный список a при помощи функции append(). Для наглядности окончательный список выводится на экран.
  4. Затем введенный список и его длина передаются в качестве аргументов в рекурсивную функцию sum_arr(), код которой мы написали ранее.
  5. Как только длина списка уменьшается до 0, работа функции прекращается и она перестает вызывать сама себя.
  6. Пока длина списка не равна нулю, функция возвращает сумму последнего элемента списка и вызов самой себя с длиной списка, уменьшенной на 1.
  7. Результат работы функции записывается в переменную b, которая затем выводится на экран.

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

Пример 1:
Введите длину списка:3
Введите элемент списка:3
Введите элемент списка:56
Введите элемент списка:7
Весь список:
[3, 56, 7]
Сумма элементов списка равна:
66
 
Пример 2:
Введите длину списка:5
Введите элемент списка:23
Введите элемент списка:45
Введите элемент списка:62
Введите элемент списка:10
Введите элемент списка:56
Весь список:
[23, 45, 62, 10, 56]
Сумма элементов списка равна:
196