对于求一个阶乘比如5!,一般是这么算的:
n=1;
for(i=1;i<=5;i++)
{
n=n*i;
}
或者用递归:
s=1;
int f(int n)
{
if(n==1|n==0)
s=1;
else
s=s*f(n-1);
}
根据static变量的性质,函数中定义的静态局部变量的值,不随函数调用结束而消失而是保留原值,也就是它占用的内存空间不释放,利用此点可以算的阶乘:
for(i=1;i<=5;i++)
{
f(i);
}
int f(int n)
{
static s=1;
s=s*n;
return s;
}
这样便可以求出5!. 当然使用静态变量会消耗更多的内存,同时程序可读性降低,所以不多用。