
Напишите рекурсивную функцию, которая осуществляет суммирование чисел в списке. Список должен быть
сгенерирован из 10 чисел, каждое в диапазоне от 1 до 100. На питоне Massiv = [1, 2, 3, 4, 5] Summa = 0 def DSumma(x): global Summa if x == len(Massiv): return Summa += Massiv[x] DSumma(x+1) DSumma(0) print('\nSumma = ', Summa)

Ответы на вопрос

Ответ:
import random
def Summa(n, Massiv, sum = 0):
if n == 1: return sum
sum += Massiv[n-1]
return Summa(n-1, Massiv, sum)
def massiv_generator():
m = []
for i in range(10):
m += random.randrange(1, 101)
return m
m = massive_generator()
n = len(m)
sum = Summa(n, m)
print("Результат",sum)
Объяснение:
import random
#Сначала напишем рекурсивную функцию, которая суммирует числа
def Summa(n, Massiv, sum = 0): #Сумма по умолчанию равна нулю, n - длинна массива и massive передаваемый массив
if n == 1: return sum #Когда просуммированы все элементы массива, то вернуть сумму
sum += Massiv[n-1] #Прибавить элемент массива к сумме
return Summa(n-1, Massiv, sum) #Перейти к следующей рекурсии
#Теперь напишем генератор массива из 10 чисел
def massiv_generator():
m = [] # создаем пустой массив
for i in range(10):
m += random.randrange(1, 101) #создаем случайно число от 1 до 100 и присваем его к концу массива
return m #возвращаем массив
#Теперь переходим к глобальному коду
m = massiv_generator() #Вызываем функцию и создаем массива из 10 случайных чисел
n = len(m) #определяем длинну массива
sum = Summa(n, m) #Вызываем рекурсивную функцию
print("Результат",sum) #отображаем результат



Ваш код почти верен, но он содержит несколько ошибок. Прежде всего, вы объявили список Massiv
, но внутри вашей рекурсивной функции вы используете глобальную переменную Summa
, которая не передается в функцию в качестве аргумента. Кроме того, вам необходимо использовать return
в рекурсивной функции, чтобы правильно вернуть результат суммы.
Вот исправленный код:
pythonimport random
# Генерируем список из 10 случайных чисел от 1 до 100
Massiv = [random.randint(1, 100) for _ in range(10)]
Summa = 0
def DSumma(x):
global Summa
if x == len(Massiv):
return 0 # Базовый случай: если x достигло длины списка, вернуть 0
Summa += Massiv[x]
return DSumma(x + 1) + Massiv[x] # Рекурсивный вызов
total_sum = DSumma(0)
print('Massiv =', Massiv)
print('Summa =', total_sum)
Этот код создает список Massiv
из 10 случайных чисел в диапазоне от 1 до 100, а затем использует рекурсивную функцию DSumma
для вычисления суммы элементов в списке. Результат суммы выводится на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili