Type error in recursion
Consider the following function:
def f(n) : def retfunc(x) : return 1 if n == 0 else x*add(f(n-k) for k in (1..n)) return retfunc
The test
w = f(9); print w, type(w)
gives
"function retfunc at 0x43d3de8" "type 'function'"
which looks fine to me. However an evaluation w(3) gives
TypeError: unsupported operand type(s) for +: 'int' and 'function'
How can I get around this error?
EDIT: One solution is, as indicated by DSM,
def f(n): retfunc(x) = 1 if n == 0 else add(x*f(n-k) for k in (1..n)) return retfunc
What I am trying to do here? Let's see:
for i in [1..8] : [c[0] for c in expand(f(i)(x)).coeffs()] [1] [1, 1] [1, 2, 1] [1, 3, 3, 1] [1, 4, 6, 4, 1] [1, 5, 10, 10, 5, 1] [1, 6, 15, 20, 15, 6, 1] [1, 7, 21, 35, 35, 21, 7, 1]