### A good answer might be:

    fact(5) == 5*fact(4)
            == 5*( 4*fact(3) )
            == 5*( 4*( 3*fact(2)) )
            == 5*( 4*( 3*(2*fact(1))) )
            == 5*( 4*( 3*(2*1)) )
            == 5*4*3*2*1
            == 120

# Activation Chain

If the subroutine `fact()` is called with an argument greater than one, it calls itself, `fact()`, with a new argument. This works because the data needed for the first activation of`fact()` is pushed onto the stack. When that activation gets control again that data is popped from the stack. This process is illustrated at right.

Each bead on the activation chain represents an activation of a subroutine. The label on a downward arc is the argument to the subroutine. The label on an upward ard is the returned value.

Each bead on the activation chain corresponds to one stack frame. The picture of the stack shows what it looks like when the activation `fact(1)` is running.

When the value 120 is returned to `main`, only `main` is active, the stack contains only its stack frame, and the activation chain consists only of `main`.

### QUESTION 18:

A downward arc corresponds to a _______ of one stack frame. An upward arc corresponds to a _______ of one stack frame.