Iteration for Factorials

Rafael Sachetto rsachetto at gmail.com
Mon Oct 22 20:44:15 CEST 2007


The right way is:

import operator
def fact(x):
   return reduce(operator.mul, xrange(1,x+1))

On 10/22/07, Paul Rudin <paul.nospam at rudin.co.uk> wrote:
>
> "mensanator at aol.com" <mensanator at aol.com> writes:
>
> > On Oct 22, 7:50 am, Duncan Booth <duncan.bo... at invalid.invalid> wrote:
> >> Py-Fun <lorna.bu... at gmail.com> 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))
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
Rafael Sachetto Oliveira

Sir - Simple Image Resizer
http://rsachetto.googlepages.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20071022/88455668/attachment.html>


More information about the Python-list mailing list