On Oct 22, 1:35 pm, Paul Rudin <[EMAIL PROTECTED]> wrote: > "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> writes: > > On Oct 22, 7:50 am, Duncan Booth <[EMAIL PROTECTED]> wrote: > >> Py-Fun <[EMAIL PROTECTED]> wrote: > >> > I'm stuck trying to write a function that generates a factorial of a > >> > number using iteration and not recursion. Any simple ideas would be > >> > appreciated. > > >> This version avoids doing anything fancier than adding 1, so it should be > >> simple enough for anyone: > > >> def factorial(e): > >> a = 1 > >> for b in range(e): > >> c = 0 > >> for j in range(b, -1, -1): > >> for d in range(a): > >> c += 1 > >> a = c > >> return a > > > Not simple enough for my taste: > > >>>> import gmpy > >>>> gmpy.fac(10) > > mpz(3628800) > > I haven't followed all this thread, but has anyone yet done: > > import operator > def fact(x): > return reduce(operator.mul, xrange(1,x))
I hope not. >>> import operator >>> def fact(x): return reduce(operator.mul,xrange(1,x)) >>> fact(3) 2 >>> fact(2) 1 >>> fact(1) Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> fact(1) File "<pyshell#7>", line 2, in fact return reduce(operator.mul,xrange(1,x)) TypeError: reduce() of empty sequence with no initial value >>> fact(0) Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> fact(0) File "<pyshell#7>", line 2, in fact return reduce(operator.mul,xrange(1,x)) TypeError: reduce() of empty sequence with no initial value I think you need to make it a bit more complicated. -- http://mail.python.org/mailman/listinfo/python-list