recursion : Java Glossary


In Java, a method may call itself. This is called recursion. You do not need to make any special declarations to make this possible. The trick is used mainly in exercises given in computer science class. In the real world, recursion has a bad name because you can overflow the stack if you are call yourself too many times without returning. If you recurse too deeply you will get a StackOverFlowError. Further, most cute recursive algorithms can be specified more efficiently with loops. The classic practical recursive algorithm is QuickSort. The classic student problem is to calculate n! with or without recursion.

Sometimes, recursion is indirect. Method a calls method b which in turn calls method a which in turn calls b.

Sometimes, you accidentally use recursion when you insert a call to the old method a in an overridden method a, and forget to say super. a();

Recursion to Descend A Directory Tree

Here is how you would delete all the files in the directory tree using recursion.

Fibonacci Recursion

The usual way to apply recursion is to divide a maxi-problem into two or more mini-problems, solve the minis and combine their solutions to find the answer to the maxi-problem. The recursive aspect means that you apply the same technique to solve the mini-problems: Split them into micro-problems, solve the micros and combine their solutions to solve the minis. And the micro-problems split into nano-problems and so on. As the levels descend you eventually arrive at problems that are so small they can be solved by some other means (this is sometimes called the ground case).

Each small problem’s solution is passed back to the recursive step that asked for it, where it gets combined with the solutions of other small problems to solve the larger problem.
~ Eric Sosman

This page is posted
on the web at:

Optional Replicator mirror
on local hard disk J:

Canadian Mind Products
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

Your face IP:[]
You are visitor number