On 12/12/13 04:18, uga...@talktalk.net wrote:

In a way,it may help to identify the issue
def multiply(a,b)
  return a*b
clearly returns the product of the two arguments, a and b
I presume it returns a+a rather than b+b+b

It depends on how multiplication is implemented in the CPU microcode.
But thats none of our concern, it uses Python multiplication.

mult(a, b-1) also has two arguments.
and rest takes the value of the two arguments,

No it doesn't.
I don't know why you think that but rest takes the
*return* value of mult(). It is no different to the
multiply() case.

I do not see an instruction to multiply the arguments

That's what mult() is. It is a function that multiplies
it's arguments by successive addition. It just happens
to do that using recursion. But you have to "trust"
that it will multiply the two arguments.

How in the original def mult(a, b) . . .,
does mult(a, b-1) say return the product of a and b-1?

It says return 'value'. And value is the addition of
the first argument and the product of (a * b-1)

Let's go back a couple of steps.

Do you understand how it works for this case:

mult(3,0)

It returns zero because b is zero, right?

Now consider what it does for

mult(3,1)

It checks if b is zero, it's not, so it executes

rest = 3 + mult(3,0)

But you know that mult(3,0) returns zero, so

rest = 3 + 0

ie rest = 3.

Do you understand this far?


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