ฟังก์ชันเรียกซ้ำ (Recursive Functions) คือกระบวนการนิยามสิ่งหนึ่งในรูปของมันเอง เป็นฟังก์ชันที่เรียกตัวเองซ้ำในส่วนตัวของฟังก์ชัน
ฟังก์ชัน fact() ที่คำนวณแฟกทอเรียลของจำนวนเต็ม 'N' ซึ่งเป็นผลคูณของจำนวนเต็มทั้งหมดจาก 1 ถึง N
เมื่อ fact() ถูกเรียกด้วยอาร์กิวเมนต์ 1 (หรือ) 0 ฟังก์ชันจะคืนค่า 1 มิฉะนั้น จะคืนค่าผลคูณของ n * fact(n-1) จนกว่า 'n' จะเท่ากับ 1
Fact(5) = 5 * fact(4)
= 5 * 4 * 3 * fact(3)
= 5 * 4 * 3 * 2 * fact(2)
= 5 * 4 * 3 * 2 * 1 * fact(1)
= 5 * 4 * 3 * 2 * 1
= 120ตัวอย่าง
โปรแกรม C สำหรับฟังก์ชันเรียกซ้ำ:
#include <stdio.h>
int fact(int n);
int main() {
int n, f;
printf("enter a number: ");
scanf("%d", &n);
f = fact(n);
printf("factorial value = %d", f);
return 0;
}
int fact(int n) {
int f;
if((n == 1) || (n == 0))
return 1;
else
f = n * fact(n - 1);
return f;
}ผลลัพธ์
เมื่อรันโปรแกรม จะได้ผลลัพธ์ดังนี้:
Enter a number 5 Factorial value = 120