แฟกทอเรียลของจำนวนเต็มบวก n เท่ากับ 1×2×3×...×n ส่วนจำนวนลบไม่มีค่าแฟกทอเรียล บทความนี้แสดงโปรแกรม C++ สำหรับคำนวณแฟกทอเรียลโดยใช้เทคนิค Dynamic Programming
อัลกอริทึม
Begin fact(int n):
อ่านค่า n
กำหนดค่าเริ่มต้น i = 1, result[1000] = {0}
result[0] = 1
for i = 1 ถึง n:
result[i] = i * result[i-1]
แสดง result[n]
End
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
int result[1000] = {0};
int fact(int n) {
if (n >= 0) {
result[0] = 1;
for (int i = 1; i <= n; ++i) {
result[i] = i * result[i - 1];
}
return result[n];
}
}
int main() {
int n;
while (true) {
cout << "ป้อนจำนวนเต็มเพื่อคำนวณแฟกทอเรียล (ป้อน 0 เพื่อออก): ";
cin >> n;
if (n == 0) break;
cout << fact(n) << endl;
}
return 0;
}
ผลลัพธ์
ป้อนจำนวนเต็มเพื่อคำนวณแฟกทอเรียล (ป้อน 0 เพื่อออก): 2 2 ป้อนจำนวนเต็มเพื่อคำนวณแฟกทอเรียล (ป้อน 0 เพื่อออก): 6 720 ป้อนจำนวนเต็มเพื่อคำนวณแฟกทอเรียล (ป้อน 0 เพื่อออก): 7 5040 ป้อนจำนวนเต็มเพื่อคำนวณแฟกทอเรียล (ป้อน 0 เพื่อออก): 10 3628800 ป้อนจำนวนเต็มเพื่อคำนวณแฟกทอเรียล (ป้อน 0 เพื่อออก): 0