10.3 Implementing Subprograms with Stack Dynamic Local Variables 453ARI = activation record instancenFunctional value
Parameter
Dynamic link
Return (to main)
LocalFirst ARI
for factorialARI
for main3??nFunctional value
Parameter
Dynamic link
Return (to factorial)Second ARI
for factorial2?nTopAt position 2
in factorialvalueARI Local
for main^6TopIn position 3
in mainvalueFunctional value
Parameter
Dynamic link
Return (to factorial)Third ARI
for factorial11third call completedFunctional value Top
Parameter
Dynamic link
Return (to main)
LocalFirst ARI
for factorialARI
for main(^3) n
6
? value
At position 2
in factorial
first call completed final results
n
Functional value
Parameter
Dynamic link
Return (to main)
Local
First ARI
for factorial
ARI
for main
3
?
?
n
Functional value Top
Parameter
Dynamic link
Return (to factorial)
Second ARI
for factorial
2
2
At position 2
in factorial
value
second call completed
Figure 10.8
Stack contents during execution of main and factorial
of factorial to be multiplied by its parameter value for n, which is 3,
yielding the final functional value of 6, which is then returned to the first
call to factorial in main.