[Tutor] Recursion help

Justin Heath justin@unixremedies.com
Thu Jul 31 18:31:56 2003


Zak Arntson wrote:

>>I am working thru some of the examples in the "Learning to Program"
>>tutorial. I am going thru the recusrion section and have gotten stumped.
>>Here is the code I have run below:
>>
>>def printList(L):
>>    # if its empty do nothing
>>    if not L: return
>>    
>>
>
>Reexamine this if statement. What will the type of L[0] be?
>
>  
>
>>    # if its a list call printList on 1st element
>>    if type(L[0]) == type([]):
>>        printList(L[0])
>>    else: #no list so just print
>>        print L[0]
>>    # now process the rest of L
>>    printList(L[1:])
>>
>>It "appears" that the code is running thru the else block over and over
>>until it reaches the end of the list. However, I do not see how the list
>>is being enumerated or how it knows to go to the next item in the list.
>>Can anyone shed some light on this?
>>    
>>
>
>You can look at it this way:
>printList((1,2,3))
>   prints (1,2,3)[0] which is 1
>   runs printList((1,2,3)[1:]) = printList((2,3))
>   now we're in printList((2,3))
>      prints (2,3)[0] which is 2
>      runs printList((2,3)[1:]) and so on ...
>
>  
>
>>Thanks,
>>Justin
>>    
>>
>
>---
>Zak Arntson
>www.harlekin-maus.com - Games - Lots of 'em
>  
>
Thank you. I completely missed the fact that L was being re-assigned 
when printList() was run again.

Thanks,
Justin