Perhaps you forgot a return, thats fundamental to recursion right - funciton returning itself to itself :)<div><br></div><div>Here's a bit modification needed - </div><div><br></div><div><div>def recur_trace(x,y):</div>
<div> print x,y</div><div> if not x:</div><div> return y</div><div> return recur_trace(x[1:], y + x[:1])</div><div><br></div><div>print ( recur_trace([],[1,2,3]) )</div><div>print</div><div>print ( recur_trace([9,8],[1,2,3]) )</div>
<div>print</div><div>print ( recur_trace([0],[1,2,3]) )</div><div><br></div><div><br></div><div>$ python poo.py </div><div>[] [1, 2, 3]</div><div>[1, 2, 3]</div><div><br></div><div>[9, 8] [1, 2, 3]</div><div>[8] [1, 2, 3, 9]</div>
<div>[] [1, 2, 3, 9, 8]</div><div>[1, 2, 3, 9, 8]</div><div><br></div><div>[0] [1, 2, 3]</div><div>[] [1, 2, 3, 0]</div><div>[1, 2, 3, 0]</div><div><br></div><div><br></div><div class="gmail_quote">On Tue, May 4, 2010 at 10:32 AM, rickhg12hs <span dir="ltr"><<a href="mailto:rickhg12hs@gmail.com">rickhg12hs@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Would a kind soul explain something basic to a python noob?<br>
<br>
Why doesn't this function always return a list?<br>
<br>
def recur_trace(x,y):<br>
print x,y<br>
if not x:<br>
return y<br>
recur_trace(x[1:], y + [x[0]])<br>
<br>
Here are a couple sample runs.<br>
<br>
>>> print(recur_trace([],[1,2,3]))<br>
[] [1,2,3]<br>
[1,2,3]<br>
<br>
So that worked okay and returned the list [1,2,3].<br>
<br>
>>> print(recur_trace([9,8],[1,2,3]))<br>
[9,8] [1,2,3]<br>
[8] [1,2,3,9]<br>
[] [1,2,3,9,8]<br>
None<br>
<br>
No list is returned here. Why?<br>
[Using Python 2.6.2]<br>
<font color="#888888">--<br>
<a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a><br>
</font></blockquote></div><br></div>