Вот программа на 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;
}