Oblicz wartość średnią
Wszyscy wiemy, jak obliczyć wartość średnią iteracyjnie:
def average(nums):
result = 0
for num in nums:
result += num
return result/len(nums)
Czy potrafisz zaproponować rozwiązanie rekurencyjne? Przyda się wzór na aktualizację wartości średniej po otrzymaniu nowej danej:
$$ \bar{x} \leftarrow \frac{x_i + (n-1)\bar{x}}{n} $$
W tym wzorze \(\bar x\) oznacza wartość średnią, \(x_i\) to nowa wartość używana do jej aktualizacji, a \(n\) odpowiada numerowi wywołania rekurencyjnego (z wyłączeniem pierwszego wywołania funkcji).
To ćwiczenie jest częścią kursu
Ćwiczenie pytań na rozmowach kwalifikacyjnych z programowania w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj przypadek bazowy algorytmu.
- Zaimplementuj wywołanie rekurencyjne do aktualizacji wartości średniej.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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]))