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