It is kind of you to take the trouble of trying to explain.
I see the value assigned to rest on each iteration from the debugging script 
that I made, 
What I do not see is how?

Clearly, a = 3, it is constant throughout each iteration, and 
if rest is equal to 3, then a + rest must be equal to 6.

You spoke of drilling down, and I see that mult(3, 2) drills down until b == 0, 
I am less clear
how it then begins to ascend, and if it does, why? But, my question is how is 
rest assigned 
a single argument/value?

I agree, rest equals 0 (zero) on the first iteration and 3 on the second, but 
as I don't see how,
I cannot understand how value = a + rest  => 3+0 => 3 although I get:
value = a + rest, and I get (where rest = 0) a + rest => 3+0 and I get 3+0 => 3


What am I missing? Is it something that isn't explicit?
It seems to me that rest has two arguments, not one.
I do not understand "+>", is it a typo perhaps?

Many thanks.

 
-A

 

-----Original Message-----
From: Alan Gauld <alan.ga...@btinternet.com>
To: tutor@python.org
Sent: Wed, 11 Dec 2013 9:05
Subject: Re: [Tutor] recursive function example


On 10/12/13 14:48, uga...@talktalk.net wrote: 
 
OK, I'll try again, this time just walking through the code from the top. 
 
> def mult(a, b): 
>      if b == 0: 
>          return 0 
>      rest = mult(a, b - 1) 
>      value = a + rest 
>      return value 
 > 
> print "3 * 2 = ", mult(3, 2) 
 
We print "3 * 2 = " and then call mult(3,2) 
b does not equal zero so we move to the line rest = mult(a,b-1) 
This calls mult(3,1) 
 
Now in the new invocation of mult() 
b does not equal zero so we move to the line rest = mult(a,b-1) 
This calls mult(3,0) 
 
Now in the new invocation of mult() 
b does equal zero so we return zero 
 
Now back in the mult(3,1) version of mult() 
rest now equals zero 
value = a + rest  => 3+0 => 3 
we return 3 
 
Now back in the original invocation of mult() 
rest = 3 
value = a+rest +> 3+3 => 6 
we return 6 
 
we print 6. 
End of program 
 
Remember that each time mult() is called it creates 
its own mini-world of variables independent of the 
previous calls. 
 
HTH 
-- Alan G 
Author of the Learn to Program web site 
http://www.alan-g.me.uk/ 
http://www.flickr.com/photos/alangauldphotos 
 
_______________________________________________ 
Tutor maillist  -  Tutor@python.org 
To unsubscribe or change subscription options: 
https://mail.python.org/mailman/listinfo/tutor 

 
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to