Beräkna ett medelvärde
Vi vet alla hur man beräknar ett medelvärde iterativt:
def average(nums):
result = 0
for num in nums:
result += num
return result/len(nums)
Kan du skriva en rekursiv lösning? Följande formel för att uppdatera ett medelvärde givet ett nytt värde kan vara till hjälp:
$$ \bar{x} \leftarrow \frac{x_i + (n-1)\bar{x}}{n} $$
Här representerar \(\bar x\) medelvärdet, \(x_i\) är det nya värde som används för att uppdatera medelvärdet, och \(n\) motsvarar rekursionsnivån (exklusive det initiala anropet till funktionen).
Den här övningen är en del av kursen
Öva på kodningsintervjufrågor i Python
Övningsinstruktioner
- Ange basfallet för algoritmen.
- Definiera det rekursiva anropet för att uppdatera medelvärdet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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]))