Факториал числа в C++: итерационные, рекурсивные и динамические методы программирования

Вот программа на C++, позволяющая найти факториал заданного числа разными методами:

Метод 1: итеративный подход

#include <iostream>
using namespace std;
unsigned long long factorialIterative(int n) {
    unsigned long long fact = 1;
    for (int i = 1; i <= n; i++) {
        fact *= i;
    }
    return fact;
}
int main() {
    int num;
    cout << "Enter a number: ";
    cin >> num;

    unsigned long long result = factorialIterative(num);
    cout << "Factorial of " << num << " using iterative approach: " << result << endl;

    return 0;
}

Метод 2: рекурсивный подход

#include <iostream>
using namespace std;
unsigned long long factorialRecursive(int n) {
    if (n == 0)
        return 1;
    else
        return n * factorialRecursive(n - 1);
}
int main() {
    int num;
    cout << "Enter a number: ";
    cin >> num;

    unsigned long long result = factorialRecursive(num);
    cout << "Factorial of " << num << " using recursive approach: " << result << endl;

    return 0;
}

Метод 3: подход динамического программирования (мемоизация)

#include <iostream>
#include <vector>
using namespace std;
vector<unsigned long long> memo;
unsigned long long factorialDP(int n) {
    if (n == 0)
        return 1;

    if (memo[n] != 0)
        return memo[n];

    memo[n] = n * factorialDP(n - 1);
    return memo[n];
}
int main() {
    int num;
    cout << "Enter a number: ";
    cin >> num;

    memo.resize(num + 1, 0);
    unsigned long long result = factorialDP(num);
    cout << "Factorial of " << num << " using dynamic programming approach: " << result << endl;

    return 0;
}