[quote]
引用第0楼sbdwgu于2009-03-18 20:53发表的“请教阶乘太大,无法得出结果?”:
如果我想计算
365!/(365-40)!/(365^40)
的值为多少,在R中打入factorial(365)后出现:
[1] Inf
Warning message:
.......[/quote]
我之前做过计算阶乘的一个小程序,参考C程序写的,但是没有优化过,算1000数量级的还可以,10000数量级的速度很慢了,大家慢拍:)
<br />
# TODO: Add comment<br />
# <br />
# Author: owner<br />
###############################################################################<br />
gc()<br />
miao <- 1<br />
storeLength <- 5<br />
x <- 10 # <-----------更改数字<br />
for (i in 2:x){<br />
carry <- 0<br />
for (j in 1:length(miao)){<br />
multipleResult <- miao[j]*i+carry<br />
miao[j] <- multipleResult%%(10^storeLength)<br />
carry <- multipleResult%/%(10^storeLength)<br />
}<br />
while (carry != 0){<br />
miao[length(miao)+1]=carry%%(10^storeLength)<br />
carry <- carry%/%(10^storeLength)<br />
}<br />
#print(i)<br />
}<br />
<br />
miao <- formatC(miao,width=storeLength,format="d",flag="0")<br />
myResult <- paste(miao[length(miao):1],collapse="")<br />
myResult <- gsub(paste("^0{1,",storeLength,"}",sep=""),"",myResult)<br />
nchar(myResult)<br />
<br />
<br />