เหตุผลที่การเขียนโปรแกรม ต้องเริ่มนับจาก 0 ไม่ใช่ 1
ในทางวิทยาศาสตร์คอมพิวเตอร์ เรามักนิยมเริ่มนับจำนวนเริ่มจาก 0 ไม่ใช่ 1 เหมือนอย่างที่มนุษย์ทั่วไปใช้กัน เคยสงสัยมั้ยครับ? จริงๆ มันมีเหตุผลของมันอยู่นะ…
ตัวอย่างเช่น คลินิกแห่งหนึ่ง มีคนไข้ n คน มีห้องตรวจ 3 ห้อง พยาบาลจึงได้จัดคิวคนไข้ออกเป็นกลุ่มละ 3 คน
คิวที่ 1 คือคนไข้หมายเลข 1 2 และ 3
คิวที่ 2 คือคนไข้หมายเลข 4 5 และ 6
คิวที่ 3 คือคนไข้หมายเลข 7 8 และ 9
แล้วคนไข้คนที่ n จะได้คิวที่เท่าไหร่?
ลองหยิบดินสอ, กระดาษขึ้นมาหาสูตรทั่วไปดูครับ
….
….
….
คนไข้คนที่ n จะได้คิวที่ 1 + ⌊(n-1)/3⌋
สำหรับคนที่ไม่คุ้นเครื่องหมายวงเล็บด้านบน มันคือหารปัดเศษทิ้งนะครับ
หรือเขียนเป็นสมการใน javascript ได้เป็น 1+Math.floor((n-1)/3) นั่นแหละ
งั้นเปลี่ยนใหม่ เราไม่เริ่มนับที่ 1 ละ เปลี่ยนไปนับจาก 0 แทน จะเป็นยังไง…
คิวที่ 0 คือคนไข้หมายเลข 0 1 และ 2
คิวที่ 1 คือคนไข้หมายเลข 3 4 และ 5
คิวที่ 2 คือคนไข้หมายเลข 6 7 และ 8
หลังจากขีดๆ เขียนๆ ลงกระดาษ เราจะได้ว่าคนไข้คนที่ n จะได้คิวที่ ⌊n/3⌋ (หรือ Math.floor(n/3) น่ะแหละ)
สมการสั้นขึ้นเยอะเลย!
นี่เป็นหนึ่งในเหตุผลมากมายครับ ว่าทำไมนักวิทยาศาสตร์คอมพิวเตอร์ถึงตัดสินใจให้เริ่มนับจาก 0
ล้ำลึกเนอะ
ขอบคุณ https://www.earthchie.com/…/why-comscience-start-counting-…/
math.floor javascript 在 JavaScript Math 物件常用方法 - Dylan's Blog 的推薦與評價
Math.round() 接受一個數字參數,並回傳該參數四捨五入後的值. 1, Math.round(1.499) // 1. 1, Math.round(1.501) // 2. ... <看更多>
math.floor javascript 在 How to round to at most 2 decimal places, if necessary? 的推薦與評價
... <看更多>
相關內容