Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP ค่าเฉลี่ย N จำนวนคู่แรก

ตัวอย่างโค้ด

<?php
function even_nums_avg($val) {
    return $val + 1;
}

$val = 11;
echo "The average of the first n natural numbers that are even is " . even_nums_avg($val);
?>

ผลลัพธ์

The average of the first n natural numbers that are even is 12

คำอธิบายและแก้ไข

ปัญหา: ฟังก์ชัน even_nums_avg($val) คืนค่า $val + 1 ซึ่งไม่ใช่ค่าเฉลี่ยของ N จำนวนคู่แรก

ความเข้าใจที่ถูกต้อง:

  • N จำนวนคู่แรก: 2, 4, 6, ..., 2N
  • Sum = 2(1+2+...+N) = 2×N(N+1)/2 = N(N+1)
  • Average = Sum/N = N+1

ดังนั้น ถ้า $val = N (จำนวนของ Even Numbers) → Average = N+1 = 12 ✓

แต่ถ้า $val = ค่าสูงสุด (Max Value) → Logic แตกต่าง

Clarification

<?php
// Case 1: $val = count of even numbers (N)
function avg_first_n_evens($n) {
    return $n + 1;  // Correct: avg of 2,4,...,2n = n+1
}

// Case 2: $val = maximum value (find evens up to $val)
function avg_evens_upto($max) {
    $last_even = ($max % 2 == 0) ? $max : $max - 1;
    $count = $last_even / 2;
    $sum = $count * ($count + 1);  // n(n+1)
    return $sum / $count;  // = $count + 1 = $last_even/2 + 1
}

echo "Avg of first 11 evens: " . avg_first_n_evens(11) . "\n";  // 12
echo "Avg of evens up to 11: " . avg_evens_upto(11) . "\n";     // 6 (2,4,6,8,10 → avg=6)
?>

ผลลัพธ์

Avg of first 11 evens: 12
Avg of evens up to 11: 6