常见的有两种:
递归版本:
int Fac(int n){if(n==0) return 1
return n*Fac(n-1)
}
还有一种是循环版:
int ans=1for(int i=1i<=ni++) ans*=i
测试方法:
#include<stdio.h>int Fac(int n){
if(n==0) return 1
return n*Fac(n-1)
}
int main(){
int n
while(scanf("%d",&n)!=EOF){
int ans=1
for(int i=1i<=ni++) ans*=i
printf("%d %d\n",ans,Fac(n))
}
return 0
}
有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。