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
18.2
Invoking
factorial(4)
spawns recursive calls to
factorial
.
Activation record
for
5
factorial(0)
n:
0
Activation record
for
4
Activation record
for
factorial(1)
n:
factorial(1)
n:
1
1
Activation record
for
Activation record
for
3
Activation record
for
factorial(2)
n:
factorial(2)
n:
factorial(2)
n:
2
2
2
Activation record
for
Activation record
for
Activation record
for
Activation record
for
2
factorial(3)
n:
factorial(3)
n:
factorial(3)
n:
factorial(3)
n:
3
3
3
3
Activation record
for
Activation record
for
Activation record
for
Activation record
for
1
Activation record
for
factorial(4)
n:
factorial(4)
n:
factorial(4)
n:
factorial(4)
n:
factorial(4)
n:
4
4
4
4
4
6
Activation record
for
factorial(1)
n:
1
Activation record
for
Activation record
for
7
factorial(2)
n:
factorial(2)
n:
2
2
Activation record
for
Activation record
for
Activation record
for
8
factorial(3)
n:
factorial(3)
n:
factorial(3)
n:
3
3
3
Activation record
for
Activation record
for
Activation record
for
Activation record
for
9
factorial(4)
n:
factorial(4)
n:
factorial(4)
n:
factorial(4)
n:
4
4
4
4
F
IGURE
18.3
When
factorial(4)
is being executed, the
factorial
method is called recursively, causing stack
space to dynamically change.
Search WWH ::
Custom Search