Java Reference
In-Depth Information
Final value = 120
5!
5!
5! = 5 * 24 = 120 is returned
5 * 4!
5 * 4!
4! = 4 * 6 = 24 is returned
4 * 3!
4 * 3!
3! = 3 * 2 = 6 is returned
3 * 2!
3 * 2!
2! = 2 * 1 = 2 is returned
2 * 1!
2 * 1!
1 returned
1
1
(a) Sequence of recursive calls
(b) Values returned from each recursive call
Fig. 18.2 | Recursive evaluation of 5!.
1
// Fig. 18.3: FactorialCalculator.java
2
// Recursive factorial method.
3
4
public class FactorialCalculator
5
{
6
// recursive method factorial (assumes its parameter is >= 0)
public static long factorial( long number)
{
if (number <= 1 ) // test for base case
return 1 ; // base cases: 0! = 1 and 1! = 1
else // recursion step
return number * factorial(number - 1 );
}
7
8
9
10
11
12
13
14
15
// output factorials for values 0-21
16
public static void main(String[] args)
17
{
18
// calculate the factorials of 0 through 21
19
for ( int counter = 0 ; counter <= 21 ; counter++)
20
System.out.printf( "%d! = %d%n" , counter,
factorial(counter)
);
21
}
22
} // end class FactorialCalculator
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
Fig. 18.3 | Recursive factorial method. (Part 1 of 2.)
 
 
Search WWH ::




Custom Search