เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

คำนวณค่าเฉลี่ย

เราทุกคนรู้วิธีคำนวณค่าเฉลี่ยแบบวนซ้ำ:

def average(nums):

    result = 0

    for num in nums:
        result += num

    return result/len(nums)

ลองเขียนวิธีแก้ปัญหาแบบ recursion ดูบ้าง สูตรสำหรับอัปเดตค่าเฉลี่ยเมื่อได้รับค่าใหม่อาจเป็นประโยชน์:

$$ \bar{x} \leftarrow \frac{x_i + (n-1)\bar{x}}{n} $$

โดยที่ \(\bar x\) คือค่าเฉลี่ย, \(x_i\) คือค่าใหม่ที่ป้อนเข้ามาเพื่ออัปเดตค่าเฉลี่ย และ \(n\) คือหมายเลขของการเรียกแบบ recursive (ไม่นับการเรียกฟังก์ชันครั้งแรก)

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนด base case สำหรับอัลกอริทึม
  • กำหนดการเรียกแบบ recursive เพื่ออัปเดตค่าเฉลี่ย

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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]))
แก้ไขและรันโค้ด