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