C版本
#include <stdio.h>
//#define _CRT_SECURE_NO_WARNINGS VS环境编译加上这句话避免scanf报错
long long factorial(unsigned short int para);
int main(void)
{
unsigned short int input = 0;
printf("Input a number:\n\r");
scanf("%d", &input);
printf("%hd的阶乘是:%ld\n\r", input,factorial(input));
return 0;
}
long long factorial(unsigned short int para)
{
static long long result = para;
if (para)
factorial(--para);
if (!para)
return 1;
else
return result *= para;
}
C++版本
#include <iostream>
using namespace std;
long long factorial(unsigned short int para);
int main(void)
{
unsigned short int input = 0;
cout << "Input a number:" << endl;
cin >> input;
cout << input << "的阶乘是:" << factorial(input) << endl;
return 0;
}
long long factorial(unsigned short int para)
{
static long long result = para;
if (para)
factorial(--para);
if (!para)
return 1;
else
return result *= para;
}