[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