题目描述
求 n!,也就是 1×2×3⋯×n。
挑战:尝试不使用循环语句(for、while)完成这个任务。
输入格式
第一行输入一个正整数 n。
输出格式
输出一个正整数,表示 n!。
输入输出样例
输入 输出
3 6 首先来一个使用for循环的
# include <stdio.h>
int main(void){
int n,i;
int fab=1;
scanf("%d",&n);
for(i=1;i<=n;i++){
fab*=i;
}
printf("%d",fab);
return 0;
}
再用一个递归
# include<stdio.h>
int fab(int x){
if (x<0){
printf("Error!");
return -1;
}
if (x==0){
return 1;
}
if(1<=x&&x<=12)
return x*fab(x-1);
else{
printf("Error!");
return -1;
}
}
int main(void){
int n,fabs;
scanf("%d",&n);
fabs=fab(n);
printf("%d",fabs);
return 0;
}
事实上,用int,long int 或者longlong int 能计算的阶乘都是很小的,如果遇到大数阶乘,我们需要换一种新的方法。