
1. 9.1 ความนำ
1.1. ใช้ความรู้พื้นฐานจากการเขียนโปรแกรมย่อยและนำมาเพิ่มเติม
1.2. ภายในโปรแกรมย่อยนั้น จะเรียกชื่อโปรแกรมย่อยตัวเองขึ้นมาทำงาน
1.3. โปรแกรมย่อยคือกระดาษที่มีคำสั่งโปรแกรมย่อย 1 แผ่น
1.3.1. โปรแกรมย่อย
1.3.1.1. โปรแกรมย่อย
1.3.2. โปรแกรมย่อย
1.3.3. โปรแกรมย่อย
1.3.3.1. โปรแกรมย่อย
2. 9.2 ข้อควรคำนึงในการเขียนโปรแกรมเรียกตัวเอง
2.1. 1. มีจุดหยุด โดยไม่เรียกตัวเองอีก
2.2. 2. มีการเรียกตัวเองโดยลดค่าหรือเพิ่มค่าเข้าหาจุดหยุด
2.3. ตัวอย่าง
2.3.1. การหาผลรวมตั้งแต่ 1 จนถึงค่าที่กำหนด
2.3.1.1. กำหนดให้ s() เป็นการหาผลรวม
2.3.1.2. s(10) = 10 + s(9) s(9) = 9+ s(8) s(8) = 8+ s(7) : s(3) = 3+ s(2) s(2) = 2+ s(1) s(1) = 1
2.3.1.3. เขียนเป็นสูตรได้ดังนี้ s(n) = 1 ; เมื่อ n = 1 = n + s(n-1) ; อื่นๆ
2.3.1.4. เขียนเป็นฟังก์ชั่นได้ดังนี้ function s($n) { if ($n == 1) retrun 1; retrun $n+s($n-1); }
3. 9.3 โปรแกรมเรียกตัวเองกับการวนรอบ
3.1. 9.3.1 ตัวอย่างการแสดงเลขจำนวนถึงค่าที่กำหนด
3.1.1. function disp1($n) { for($i = 1; $i <= $n; $i+ +) echo “$i <br>”; }
3.1.2. function disp_r ($n) { if ($n == 0) return; disp_r($n-1); echo “$n <br>”; }
3.2. 9.3.2 แฟคทอเรียล
3.2.1. คณิตศาสตร์
3.2.1.1. n! = n x (n-1)!
3.2.1.2. 5! = 5 x 4! 4! = 4 x 3! 3! = 3 x 2! 2! = 2 x 1! 1! = 1 x 0! 0! = 1
3.2.1.3. 5! = 5 x 4 x 3 x 2 x 1
3.2.2. แบบ for
3.2.2.1. function fact1($n) { $f = 1; for ($i = $n; $i > 1; $i--) $f *= $i; return $f; }