3. ฟังก์ชันเรียกซ้ำ
3. ฟังก์ชันเรียกซ้ำ
ฟังก์ชันในภาษาซีสามารถเรียกตัวเองได้ซึ่งเรียกว่าฟังก์ชันเรียกซ้ำ
รูปแบบของฟังก์ชันเหมือนกับฟังก์ชันธรรมดา ส่วนมากเขียนฟังก์ชันเรียกซ้ำเพื่อแก้ปัญหาชนิดที่มีการกำหนดแบบเรียกซ้ำ (recursively defined) เช่น การหาค่า n! (n เป็นจำนวนเต็มบวก) ซึ่งเป็นผลคูณของเลขจำนวนเต็มตั้งแต่ 1 ถึง n
ตัวอย่าง 6.8 ฟังก์ชันเรียกซ้ำหาค่าแฟคทอเรียล
#include <stdio.h>
int factorial(int);
void main()
{
printf("%d\n", factorial(4));
}
int factorial(int n)
{
if(n <= 1) /* คำนวณ n! */
return (1);
else
return (n * factorial(n-1)); /* ฟังก์ชัน factorial() เรียกตัวเอง */
}
การทำงานคือ factorial(4) ส่งค่า (4 * factorial(3)) กลับไปยังตำแหน่งที่เรียกฟังก์ชันนี้
factorial(3) ส่งค่า (3 * factorial(2)) กลับไปยังตำแหน่งที่เรียกฟังก์ชันนี้
factorial(2) ส่งค่า (2 * factorial(1)) กลับไปยังตำแหน่งที่เรียกฟังก์ชันนี้
factorial(1) ส่งค่า (1) กลับไปยังตำแหน่งที่เรียกฟังก์ชันนี้
ดังนั้น factorial(2) มีค่า 2 * factorial(1) คือ 2 * 1 เท่ากับ 2
factorial(3) มีค่า 3 * factorial(2) คือ 3 * 2 เท่ากับ 6
factorial(4) มีค่า 4 * factorial(3) คือ 4 * 6 เท่ากับ 24
ผลการกระทำการ
24
จัดทำโดย นางสาวทิพย์สุคนธ์ พันธ์กิ่ง กลุ่มสาระการเรียนรู้วิทยาศาสตร์และเทคโนโลยี
โรงเรียนบุญวัฒนา สำนักงานเขตพื้นที่การศึกษามัธยมศึกษานครราชสีมา