最近我在一次采访中被要求描述一种计算任意大数的阶乘的方法; 一种方法,我们获得答案的所有数字.
我搜索了不同的地方,并在几个论坛上询问.但我想知道是否有任何方法可以在不使用像GMP这样的库的情况下实现这一目标.
谢谢.
我需要计算高达100左右的阶乘数!为了确定一系列硬币翻转式数据是否是随机的,根据贝叶斯概率的维基百科条目. 正如你在那里看到的那样,必要的公式涉及3个因子计算(但是,有趣的是,这些因子计算中的两个是沿着到第三个计算的方式计算的).
我在这里看到了这个问题,但我认为这个整数很快就会被吹灭.我也可以创建一个更加智能的因子计算功能(即,如果我有11!/(7!3!),根据wiki示例,我可以去(11*10*9*8)/ 3!),但这对我来说过早优化,在某种意义上我希望它能够工作,但我并不关心速度(还).
那么,为了获得这个概率,我可以调用什么样的C#库来计算阶乘?我对可以进入阶乘计算的所有可怕性感兴趣,我只想以一种我可以操纵它的方式得到结果.在Math命名空间中似乎没有因子函数,因此问题.
我想写一个程序来评估给定整数的阶乘.
以下基础知识我在java中编写了以下代码:
long fact(int num){
if(num == 1)
return 1;
else
return num*fact(num-1);
}
Run Code Online (Sandbox Code Playgroud)
但后来我意识到,对于许多整数输入,结果可能不是所期望的,因此对于测试直接给出输入为100.
我怀疑是真的,因为我得到的结果是"0"(原因结果可能超出了长期范围).
所以,我只是好奇并渴望知道如何使我的程序适用于输入<= 150.
我很感激C编程语言或Java中的任何有效解决方案.