Tính giá trị trung bình
Ai cũng biết cách tính giá trị trung bình theo kiểu lặp:
def average(nums):
result = 0
for num in nums:
result += num
return result/len(nums)
Bạn có thể viết lời giải đệ quy không? Công thức cập nhật giá trị trung bình khi có đầu vào mới có thể hữu ích:
$$ \bar{x} \leftarrow \frac{x_i + (n-1)\bar{x}}{n} $$
Ở đây, \(\bar x\) là giá trị trung bình, \(x_i\) là giá trị mới được dùng để cập nhật trung bình, và \(n\) là số lần gọi đệ quy (không tính lần gọi hàm ban đầu).
Bài tập này là một phần của khóa học
Luyện tập câu hỏi phỏng vấn lập trình bằng Python
Hướng dẫn bài tập
- Xác định trường hợp cơ sở của thuật toán.
- Định nghĩa lời gọi đệ quy để cập nhật giá trị trung bình.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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]))