[Tutor] recursive function example

Alan Gauld alan.gauld at btinternet.com
Wed Dec 11 09:50:24 CET 2013


On 10/12/13 14:48, ugajin at 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



More information about the Tutor mailing list