On 11/12/13 12:36, uga...@talktalk.net wrote:

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.

Correct and the return value from the second invocation of mul() is 3.

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,

It returns a value to the previous invocation of mul()
Remember we are calling mul() several times, each with a new set of values.

So mul(3,2) calls mul(3,1)
and mul(3,1) calls mul(3,0)

mul(3.0) returns 0 to mul(3,1)
mul(3,1) then returns 3+0 => 3 to mul(3,2)
mul(3,2) returns 3+3 => 6.

Let me try one more time but this time I will remove the recursion
and substitute the equivalent code with modified variable names.

how is rest assigned a single argument/value?

rest = a + mul(a,b-1)

rest takes on the sum of a and the return value from the
new call to mul()

I agree, rest equals 0 (zero) on the first iteration

No it doesn't. rest is never created in the b=0 case.
mul just returns 0 directly. See below...

It seems to me that rest has two arguments, not one.
I do not understand "+>", is it a typo perhaps?

Yes it was supposed to be => as in 3+2 => 5

Here goes breakdown number 2.

def mult1(a1, b1):
    if b1 == 0:
        return 0
    rest1 = mult2(a1, b1 - 1)
    value1 = a1 + rest1
    return value1

def mult2(a2, b2):
    if b2 == 0:
        return 0
    rest2 = mult3(a2, b2 - 1)
    value2 = a2 + rest2
    return value2

def mult3(a3, b3):
    if b3 == 0:
        return 0

mult1(3,2)

Try working through that set.
Then look at the code inside each function.
It is identical... So we only really need
one function mult().

Does that help?

--
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

Reply via email to