Alex Martelli aleax at
Thu Jan 24 16:31:46 CET 2002

<arthur.siegel at> wrote in message
news:mailman.1011811475.724.python-list at
> I'd propose the following as "simplest" - in the
> sense of the code reflecting  a naive
> understanding of the concept, and  fundametal
> programming operations with no magic.
> Am I missing the handling of some degenerate
> situations?

Yes, in a sense -- in Python 2.1 and earlier, all
strings of length 13 or more will cause an overflow
in one of the multiplications, since 12! is the
largest factorial that fits in a 32-bit signed
integer (assuming your machine is 32-bit -- you'll
be able to handle slightly longer strings if you
have a 64-bit machine).

No problem in Python 2.2 (it gives a long result
rather than an overflow) and easily fixed in earlier
Python versions:

> def f(s):
>     i=len(s)
>     x=1

Just change this initialization to x=1L (thus ensuring
a long result anyway) and it will work.


More information about the Python-list mailing list