Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาค่าแฟกทอเรียลด้วย Dynamic Programming


แฟกทอเรียลของจำนวนเต็มบวก 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