方法一:递归算法
#include<iostream>
using namespace std;
int fac(int n)//递归算法,调用函数本身
{
if(n==0||n==1)
return 1;
else
{
return n*fac(n-1);
}
}
int main()
{
int n;
cin>>n;
cout<<fac(n);
return 0;
}
方法二:累乘变量(常规求法)
#include<iostream>
using namespace std;
int fac(int n)
{
int sum=1;
for(int i=n;i>=1;i--)
{
sum*=i;//累乘变量
}
return sum;
}
int main()
{
int n;
cin>>n;
cout<<fac(n);
return 0;
}
方法三:静态变量求阶乘
#include<stdio.h>
int fac(int n)
{
static int f=1;//函数调用结束后,静态变量所储存的值不变,原因是他申请的内存空间不释放
f=f*n;
return f;
}
int main()
{
int i;
for(i=1;i<=5;i++)
printf("%d\n",fac(i));
getch();
return 0;
}