Help- Simple recursive function to build a list

Roy Smith roy at panix.com
Wed Mar 2 03:57:41 CET 2005


In article <mailman.3222.1109731598.22381.python-list at python.org>,
 actuary77 <actuary77 at elemental-systems.com> wrote:

> I am trying to write simple recursive function to build a list:
> 
> 
> def rec(n,alist=[]):
>      _nl=alist[:]
>      print n,_nl
>      if n == 0:
>          print n,_nl
>          return _nl
>      else:
>          _nl=_nl+[n]
>          rec(n-1,_nl)
> 
> _nl=[]
> _nl=rec(4)
> print _nl
> 
> ### shouldn't this work?
> 
> _nl=rec(4)
> 
> 
> 
> 
> The output is:
> 4 []
> 3 [4]
> 2 [4, 3]
> 1 [4, 3, 2]
> 0 [4, 3, 2, 1]
> 0 [4, 3, 2, 1]
> None
> None
> 
> 
> Question:
> ============
> Why isn't the function returning a list?
> Why is function returning None?

I'm not 100% sure what you're trying to do here, but I suspect you left a 
"return" out of the else block, i.e. "return rec(n-1, _nl)".  That would 
certainly explain why it's returning None.

What problem are you trying to solve, or are you just experimenting with 
recursion?



More information about the Python-list mailing list