Recursive functions not returning lists as expected

rickhg12hs rickhg12hs at gmail.com
Tue May 4 01:02:45 EDT 2010


Would a kind soul explain something basic to a python noob?

Why doesn't this function always return a list?

def recur_trace(x,y):
  print x,y
  if not x:
    return y
  recur_trace(x[1:], y + [x[0]])

Here are a couple sample runs.

>>> print(recur_trace([],[1,2,3]))
[] [1,2,3]
[1,2,3]

So that worked okay and returned the list [1,2,3].

>>> print(recur_trace([9,8],[1,2,3]))
[9,8] [1,2,3]
[8] [1,2,3,9]
[] [1,2,3,9,8]
None

No list is returned here.  Why?
[Using Python 2.6.2]



More information about the Python-list mailing list