Calculer une valeur moyenne
Nous savons tous calculer une moyenne de manière itérative :
def average(nums):
result = 0
for num in nums:
result += num
return result/len(nums)
Pouvez-vous proposer une solution récursive ? La formule suivante pour mettre à jour une moyenne à l’arrivée d’une nouvelle valeur peut être utile :
$$ \bar{x} \leftarrow \frac{x_i + (n-1)\bar{x}}{n} $$
Ici, \(\bar x\) désigne la valeur moyenne, \(x_i\) est la nouvelle valeur utilisée pour mettre à jour la moyenne, et \(n\) correspond au numéro de l’appel récursif (en excluant l’appel initial de la fonction).
Cet exercice fait partie du cours
<cours>S’exercer aux questions d’entretien de code en Python</cours>Instructions de l’exercice
- Définissez le cas de base de l’algorithme.
- Écrivez l’appel récursif pour mettre à jour la valeur moyenne.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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]))