递归法:

#include <iostream>
using namespace std;

long Fac(int n){
    if(n==0){
        return 1;
    }
    else{
        return n*Fac(n-1);
    }
}
void main(){
    int n;
    long f;
    cout <<"please input a number:" << endl;
    cin >> n;
    f = Fac(n);
    cout << "Result:" << f << endl;
}

迭代法:

#include <iostream>
using namespace std;
typedef usigned int UINT; // 自定义类型
long Fac(const UINT n){
    long ret = 1;
    for(int i = 1; i <= n; i++){
        ret *=i;
    }
    return ret;
}
void main(){
    int n;
    long f;
    cout <<"please input a number:" << endl;
    cin >> n;
    f = Fac(n);
    cout << "Result:" << f << endl;
}