计算n!=1*2*3*...*(n–1)*

 我来答
changyiduU4Q
高粉答主

2019-10-08 · 关注我不会让你失望
知道答主
回答量:264
采纳率:100%
帮助的人:8.5万
展开全部

递归算法如下:

long long   Factorial(long long  n){if(n==0)return 1;

return Factorial(n-1)*n;}void Test1(){

printf("%lld\n",Factorial(1));

printf("%lld\n",Factorial(10));

printf("%lld\n",Factorial(100));

printf("%lld\n",Factorial(1000));}



扩展资料

自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

历史

早在12世纪,印度学者就已有使用阶乘的概念来计算排列数的纪录[3]。1677年时,法比安·斯特德曼使用Change ringing来解释阶乘的概念。

在描述递归方法之后,斯特德将阶乘描述为:“现在这些方法的本质是这样的:一个数字的变化数包含了所有比他小的数字(包括本身)的所有变化数……因为一个数字的完全变化数是将较小数字的变化数视为一个整体,并透过将所有数字的完整变化联合起来。”,

参考资料来源:百度百科-阶乘

旅初彤2B
2016-11-23 · TA获得超过2.6万个赞
知道大有可为答主
回答量:4.4万
采纳率:65%
帮助的人:5446万
展开全部
解法1,使用for循环做:
#include<stdio.h>
void main(){
long i,result=1,n;
printf("请输入n的值:");
scanf("%ld",&n);
for(i=1;i<=n;i++){
result*=i;
}
printf("%ld!=%ld",n,result);
}
解法2,使用while循环做:
#include<stdio.h>
void main(){
long i=1,result=1,n;
printf("请输入n的值:");
scanf("%ld",&n);
while(i<=n){
result*=i;
i++;
}
printf("%ld!=%ld",n,result);
}
解法3,使用do...while循环做:
#include<stdio.h>
void main(){
long i=0,result=1,n;
printf("请输入n的值:");
scanf("%ld",&n);
do{
i++;
result*=i;
}while(i<=n);
printf("%ld!=%ld",n,result);
}
解法4,使用递归做:
#include<stdio.h>
long calc(long num){
if(num==0){
return 0;
}else if(num==1){
return 1;
}else{
return num*calc(num-1);
}
}
void main(){
long n;
printf("请输入n的值:");
scanf("%ld",&n);
printf("%ld!=%ld",n,calc(n));
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式