find all multiplicands and multipliers for a number

Paul Rubin no.email at nospam.invalid
Wed Apr 15 18:21:14 CEST 2015


Ian Kelly <ian.g.kelly at gmail.com> writes:
> Nope. You do end up with a lot of nested filter objects, but there's
> no recursion in the Python code, which means that you're not piling up
> frame objects, and you'll never hit the interpreter's recursion limit.

I think you do get frame objects.  A quick experiment:

 def d(fuel):
	f = lambda x:x
	for i in range(fuel): f = lambda x,g=f: 1+g(x)
	return f

    >>> d(3)
    <function <lambda> at 0x1a3b9b0>
    >>> d(100)(0)
    100
    >>> d(1000)(0)

    Traceback (most recent call last):
      File "<pyshell#24>", line 1, in <module>
        d(1000)(0)
      File "<pyshell#20>", line 3, in <lambda>
        for i in range(fuel): f = lambda x,g=f: 1+g(x)
      File "<pyshell#20>", line 3, in <lambda>
      [ 1000's of lines snipped ]
    RuntimeError: maximum recursion depth exceeded
    >>> 

This happens in both 2.7 and 3.3.4.



More information about the Python-list mailing list