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