求n的阶乘编程n>=1000000000怎么办

求n的阶乘编程n>=1000000000怎么办,第1张

当n非常大时,例如 n>=1000000000,直接用递归或者循环来进行n的阶乘计算存在两个问题,一个是时耗增加,一个是数据上溢。

有一个改进的斯特林公式,直接计算结果,并且精度较高。

公式如图:

它的fortran代码如下:

当n=1000000000时,计算结果如下:

即:

1000000000! = 99046061686752510^8565705522

1751年,欧拉以大写字母M表示m阶乘,即M=1×2×3×…×m
1799年,鲁非尼在他出版的方程论著述中,则以小写字母π表示m阶乘,而在1813年,高斯则以Π(n)来表示n阶乘。而用来表示n阶乘的方法起源于英国,但仍未能确定始创人是谁。直至1827年,由于雅莱特的建议而得到流行,现在有时也会 以这个符号作为阶乘符号。
而最先提出阶乘符号n!的人是克拉姆 (1808),后来经过欧姆等人的提倡而流行,直至现在仍然通用。
当n较大时,直接计算n!变得不可能,这时可通过斯特灵(Stirling)公式计算近似算或取得大小范围。

阶乘一般自己用递归写一个函数
int fun(int n) //这儿就只考虑正数的情况
{
if (n == 0 || n == 1)
return 1;
else
return fun(n-1)n;
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13204310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-20
下一篇 2023-06-20

发表评论

登录后才能评论

评论列表(0条)

保存