阶乘是什么时候学的

 我来答
乐笔晓新
推荐于2017-12-16 · 宣化成流增民智,任重道远健国修
乐笔晓新
采纳数:64631 获赞数:222737

向TA提问 私信TA
展开全部
阶乘高二时学概率运算时学的
在学习排列组合的时候会有时用到阶乘
阶乘,也是数学里的一种术语。 阶乘指从1乘以2乘以3乘以4一直乘到所要求的另外,数学家定义,0!=1,所以0!=1!
等等等等mery

2021-03-18 · TA获得超过6351个赞
知道大有可为答主
回答量:3.2万
采纳率:47%
帮助的人:993万
展开全部
n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
双阶乘用“m!!”表示。

当 m 是自然数时,表示不超过 m 且与 m 有相同奇偶性的所有正整数的乘积。如:

当 m 是负奇数时,表示绝对值小于它的绝对值的所有负奇数的绝对值积的倒数。

当 m 是负偶数时,m!!不存在。

任何大于等于1 的自然数n 阶乘表示方法:

由于阶乘的结果随着n的增大将急剧增加。最终导致即使是unsigned long类型的整数也无法保存计算结果。那么,这时候,我们应该怎么办呢?

现在,我们就要介绍一种计算方法,该方法的主要思路如下:

1.开辟一个大小为10000或更大的整形数组;

2.数组的每一个元素只保存计算结果中的一位数字,数组索引最小的元素对应计算结果的最小位,依次类推;

3.在计算中,将1-n中的每一个数字都与数组中的每一个数相乘,将与某元素的乘积仍保存在该元素中;

4.在1-n中的每个数字与所有元素做完乘积之后,依次每一个元素中的数字是否超过10(或者radix),若超过,则向前进位;

按照上面所描述的算法,我们在这里利用C语言进行了实现:

#include
int main()
{
int carry,n,j;
int a[40001];
int digit;
int temp,i;
while(scanf("%d",&n)!=EOF){
a[0]=1;digit=1;
for(i=2; i<=n; i++)
{
for(carry=0,j=1; j<=digit; ++j)
{
temp=a[j-1]*i+carry;
a[j-1]=temp;
carry=temp/10;
}
while(carry)
{

a[digit]=carry;

++digit;

carry/=10;
}
}

for(int k=digit; k>=1; --k)
printf("%d",a[k-1]);
printf("\n");
printf("length=%d\n",digit);
}
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式