注册 登录
编程论坛 Python论坛

请各位大神帮忙写一个不用递归实现阶乘的方法

yakantosat 发布于 2010-11-05 12:28, 1246 次点击
前阶段看了一个用C/C++、java写的关于大数阶乘的算法
但不知道如何用python来写,虽然python可以用递归的方法来实现,但是受限于内存空间的大小
如果用列表来存储每一个得出的位数,再输出就能节省资源,请各位大神帮忙写写吧,谢谢了
6 回复
#2
Kabie2010-11-08 06:12
reduce(lambda x,y:x*y,range(1,10))
#3
yakantosat2010-11-09 10:55
谢谢您的回答,可是reduce函数也是类似递归的一种算法,而我想要的就是将所得出的每一位存储到列表的每一项中,这样列表中就只存储了一个数字的序列,能够节省空间,并不是一个实际的庞大数字。
无论如何,还是感谢您了,谢谢了!!
#4
Kabie2010-11-09 11:03
。。。为啥用列表反而能节省空间啊?

我还以为你说的受限于内存空间是指递归过多会堆栈溢出呢。。。
#5
yakantosat2010-11-09 12:24
因为列表的每一项存放的是这个结果的相应位置上的数字
#6
Kabie2010-11-09 17:12
根本看不懂你在说啥。。。

你的意思难道是把数字123456变成列表[1,2,3,4,5,6]。。。

那样明显只会占用更多的空间。。。
#7
wode5130xm2011-05-20 19:55
楼主可能学多了,忘记基础了,在没有认识到递归之前,我们算阶乘一般使用循环,楼主想起来点什么没有,代码如下:
s = 1
for i in range(n):
    s *= i;
print(s)

1