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.)