Combinations and recursion, from an ASPN snippet

Mike Meyer mwm at mired.org
Thu Mar 20 09:51:17 EST 2003


Andy Jewell <andy at wild-flower.co.uk> writes:
> I like to think of recursion as 'nesting' calls to the function, one inside 
> the other:
> 
> 1
>   \
>     2
>       \
>         3
>           \
>            4
>              \
>               :
>              /
>            4
>           /
>         3
>       /
>     2
>    /
> 1

[...]

> Hope this helps.  The best way to learn recursion is to play with it.  Use 
> print statements liberally, and limit the recursion depth to a reasonable 
> amount while you're at it - it's very hard to see what's going on when your 
> program dumps 10 pages of output on the screen!

Combining these two things can be really useful. Keep a recursion
counter, and print spaces to indicate the depth of the recursion:

def recursive_add(m, n, depth = 0):
    print "  " * depth, m, n
    if m < 0:
        return -recursive_add(-m, n, 1)
    elif m == 0:
        return n
    else:
        return recursive_add(m - 1, n + 1, depth + 1)
       
Also, to get real headaches, look up ackerman's function. It's an
interesting demonstration of the power of recursion.

        <mike
-- 
Mike Meyer <mwm at mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.




More information about the Python-list mailing list