แฟกทอเรียลของจำนวนเต็มไม่ติดลบ n คือผลคูณของจำนวนเต็มบวกทั้งหมดที่น้อยกว่าหรือเท่ากับ n
ตัวอย่าง: 4! = 4 × 3 × 2 × 1 = 24
หาแฟกทอเรียลได้ทั้งโปรแกรมแบบ Recursive และ Iterative
ตัวอย่างโค้ด (Recursive)
#include <iostream>
using namespace std;
int fact(int n) {
if ((n==0) || (n==1))
return 1;
else
return n * fact(n-1);
}
int main() {
int n = 4;
cout << "Factorial of " << n << " is " << fact(n);
return 0;
}
ผลลัพธ์
Factorial of 4 is 24
อธิบายการทำงาน
main() เรียก fact(n) ส่งค่าที่ต้องการหาแฟกทอเรียล:
cout<<"Factorial of "<<n<<" is "<<fact(n);
ฟังก์ชัน fact() แบบ Recursive:
int fact(int n) {
if ((n==0) || (n==1))
return 1;
else
return n * fact(n-1);
}
ถ้า n เป็น 0 หรือ 1 คืนค่า 1 (กรณีฐาน) มิฉะนั้น เรียกตัวเองด้วย n-1 และคูณกับ n จนถึงกรณีฐาน