Вычислите среднее значение
Все мы знаем, как вычислить среднее значение итеративно:
def average(nums):
result = 0
for num in nums:
result += num
return result/len(nums)
Сможете предложить рекурсивное решение? Пригодится формула обновления среднего значения при поступлении нового элемента:
$$ \bar{x} \leftarrow \frac{x_i + (n-1)\bar{x}}{n} $$
Здесь \(\bar x\) — текущее среднее значение, \(x_i\) — новый поступивший элемент, на основе которого обновляется среднее, а \(n\) соответствует номеру рекурсивного вызова (без учёта начального вызова функции).
Это упражнение является частью курса
Практика задач для собеседования по программированию на Python
Инструкции к упражнению
- Определите базовый случай алгоритма.
- Реализуйте рекурсивный вызов для обновления среднего значения.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Calculate an average value of the sequence of numbers
def average(nums):
# Base case
if len(nums) == ____:
return ____[____]
# Recursive call
n = len(nums)
return (____ + ____ * ____) / ____
# Testing the function
print(average([1, 2, 3, 4, 5]))