平均値を計算する
平均値は反復的に次のように計算できます。
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]))