致力于测试团队建设和自动化测试开发,欢迎有兴趣者一起研究讨论
大数阶乘的算法
上一篇 /
下一篇 2008-08-22 21:51:41
/ 个人分类:Automation
K8vz}?{4kG0原来做过的一个算法:大数的阶乘,如1000的阶乘51Testing软件测试网X#S
b A:B
)Fu`c]AHY0看起来好像比较简单,一个递归就可以实现,但真的是这样么?仔细看看,发现数据类型的范围远远不能满足计算结果的长度,这才是这个算法的核心,那么该如何实现呢?
$d1g5~$Q-ib5S0
51Testing软件测试网5i*O6JeO思路如下:51Testing软件测试网9oD!^0c4j7e}'z+}-N
51Testing软件测试网X-|4K5@'m#R|`,\ LwV:E利用一个数组保存计算结果,然后逐位输出51Testing软件测试网2uFS0csp^PD
51Testing软件测试网)Vm,o2UMT1)利用LOG函数计算出阶乘结果的位数,用这个值初始化一个数组51Testing软件测试网%|a0T@&~#I"@MBq kL
s0H2jEwf"\ nBa5Z02)按位进行计算并进行进位处理
`F3ty)r;D%^0
[XqW9n&w
A03)逐位输出数组的每个值拼装成计算结果51Testing软件测试网mI/U rQ*vN4Z:t
51Testing软件测试网SbZrM,t0T&oVBS代码:51Testing软件测试网F&^"]e2s!u.]LsF
51Testing软件测试网p{(\{ z0KHFunction Factorial(n)
-jx'd%C+PI0 '处理计算结果
JE}@Y YI*u+vP0 Sum = 1.051Testing软件测试网nqH/Md&u1[#t5J
Str = ""