On 11/19/2011 04:59 PM, Dave Angel wrote:
On 11/19/2011 01:36 AM, Kĩnũthia Mũchane wrote:
On 11/19/2011 06:03 AM, Asokan Pichai wrote:
Another way to do that is to avoid any intermediate variables
altogether
That may be easier to understand YMMV
def counter(mylist, val):
if len(mylist == 0):
return 0
if mylist[0] == val:
return 1 + counter(mylist[1:], val)
else:
return counter(mylist[1:])
The intermediate variable explanation by Dave actually clinched it
for me. Actually, the one I wrote is suspiciously similar to yours
;-). Anyway, thanks Asokan!
FWIW, Asokan's code looks exactly right to me. But I figured the
version I supplied would make it clearer to you what was happening.
It made it crystal clear, thank you very much.
The key to thinking recursively is to figure out exactly what the
function as a whole does, then figure out how to use exactly such a
function that solves a somewhat smaller problem, to solve the whole
thing. Since the function as a whole takes in a list, and returns a
count, that's the way to use the "smaller problem" function. Both
Asokan's answer and mine do that. But his "local variable" is implied
in the expressions, where I made it explicit so you could see what was
happening.
And I saw what was happening ;-)
If you're familiar with the mathematical proof by induction, this is
very analogous.
--
Kĩnũthia
S 1º 8' 24”
E 36º 57' 36”
1522m
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor