Java Reference
In-Depth Information
factorial(4)
Step 0: executes
factorial(4)
Step 9: return 24
return
4 * factorial(3)
Step 1: executes
factorial(3)
Step 8: return 6
return
3 * factorial(2)
Step 2: executes
factorial(2)
Step 7: return 2
return
2 * factorial(1)
Step 3: executes
factorial(1)
Step 6: return 1
return
1 * factorial(0)
Step 4: executes
factorial(0)
Step 5: return 1
return
1
F
IGURE
20.2
Invoking
factorial(4)
spawns recursive calls to
factorial
.
5
Space required
for
factorial(0)
n: 0
Space required
for
factorial(1)
n: 1
4
Space required
for
factorial(1)
n: 1
Space required
for
factorial(2)
n: 2
Space required
for
factorial(2)
n: 2
3
Space required
for
factorial(2)
n: 2
Space required
for
factorial(3)
n: 3
Space required
for
factorial(3)
n: 3
Space required
for
factorial(3)
n: 3
2
Space required
for
factorial(3)
n: 3
Space required
for
factorial(4)
n: 4
Space required
for
factorial(4)
n: 4
Space required
for
factorial(4)
n: 4
Space required
for
factorial(4)
n: 4
1
Space required
for
factorial(4)
n: 4
6
Space required
for
factorial(1)
n: 1
Space required
for
factorial(2)
n: 2
Space required
for
factorial(2)
n: 2
7
Space required
for
factorial(3)
n: 3
Space required
for
factorial(3)
n: 3
Space required
for
factorial(3)
n: 3
8
Space required
for
factorial(4)
n: 4
Space required
for
factorial(4)
n: 4
Space required
for
factorial(4)
n: 4
Space required
for
factorial(4)
n: 4
9
F
IGURE
20.3
When
factorial(4)
is being executed, the
factorial
method is called recursively, causing stack space
to dynamically change.