#include<iostream>
using namespace std;
long factorial(int);                     //函数声明，形参为一整型变量
int main()
{
    int n;                           //n为需要求阶乘的整数
    long y;
    cout<<"please input an integer:"<<endl;    
    cin>>n;
    y=factorial(n);                   //调用递归函数factorial，将返回值赋给y
    cout<<n<<"！="<<y<<endl;
    return 0;
}
long factorial(int n)                   //定义递归函数
{
    long fac;
    if(n<0)                         //如果输入负数，报错并以-1作为返回值
{
    cout<<"n<0,wrong number !"<<endl;
    fac= -1;
}
    else if(n==0||n==1)              //0！和1！相等，都为1
{
      fac=1;
}
    else
      fac=factorial(n-1)*n;            //n>1时，进行递归调用
    return fac;                      //将fac的值作为函数返回值
}
