Recursive function defined within function => NameError
jeremy at cnri.reston.va.us
jeremy at cnri.reston.va.us
Thu Feb 17 18:23:51 EST 2000
I'm not sure what your definition of better is <wink>, but the Y
combinator can be used to express recursive procedures. Here's an
applicative-order version.
Jeremy
def self_apply(g):
return g(g)
def Y(f):
def stack(x, f=f):
return f(lambda x=x:x(x))
return self_apply(stack)
def test():
def _fact1(recurse):
def _fact2(n, recurse=recurse):
if n == 0:
return 1
else:
return n * recurse()(n - 1)
return _fact2
fact = Y(_fact1)
print fact(7)
print fact(12L)
if __name__ == "__main__":
test()
Sent via Deja.com http://www.deja.com/
Before you buy.
More information about the Python-list
mailing list