Java supports *recursion.***Recursion **is the process of defining something in terms of itself. As it relates to Java programming, recursion is the attribute that allows a method to call itself. A method that calls itself is said to be **recursive**.

The classic example of recursion is the computation of the factorial of a number. The factorial of a number N is the product of all the whole numbers between 1 and N. For example, 3 factorial is 1 * 2 * 3 or 6.

Here is how a factorial can be computed by use of a recursive method :

// A simple example of recursion. class Factorial { // this is a recursive method. int fact ( int n)&amp;nbsp; { int result ; if (n==1) return 1; result = fact (n-1) * n ; return result ; }} class Recursion&amp;nbsp; ( public static void main ( String args[] )&amp;nbsp; { Factorial f = new Factorial () ; System.out. println (“ Factorial of 3 is ” + f.fact (3) )&amp;nbsp; ; System.out. println (“ Factorial of 4 is ” + f.fact (4) ); System.out. println (“ Factorial of 5 is ” + f.fact (5) ); } }

**Output**

The output from this program is shown here :

Factorial of 3 is 6 Factorial of 4 is 24 Factorial of 5 is 120

**Description –**

For those who are unfamiliar with recursive methods, the operation of **fact( ) **may seem a bit confusing. Here is how it works. When **fact( ) **is called with an argument of 1, the function returns 1 ; otherwise, it returns the product of **fact(n-1) * n**. To evaluate this expression, **fact( ) **is called with **n-1**. This process repeats until **n **equals 1 and the calls to the method begin returning. It is basically the use of **Recursion**.