|  | ^    ->|            | | 
|  | Frame             |   |  |            | | 
|  | Number          - |   |  |============|       int fact (int n) | 
|  | |  |   |  |   i = 3    |       { | 
|  | |  |   |  |------------|         if (0 == n) { | 
|  | |  |   |  |   f = ?    |           return  1;  <-------- PC | 
|  | #4 main()   <   |   |  |------------|        } | 
|  | |  |   |  |            |         else { | 
|  | |  |  -+->|------------|   --->    return n * fact (n - 1); | 
|  | |   -+-+--+-----o      |  |      } | 
|  | =   | |  |============|  |    } | 
|  | |    | |  |   n = 3    |  | | 
|  | |    | |  |------------|  |    main () | 
|  | #3 fact (3) <     | |  |     o---------+-   { | 
|  | |   -+-+->|------------|  | |    int  i; | 
|  | |  | |  --+-----o      |  | | | 
|  | = | |    |============|  | |    for (i = 0; i < 10; i++) { | 
|  | |  | |    |   n = 2    |  |  ->    int  f = fact (i); | 
|  | |  | |    |------------|  |        printf ("%d! = %d\n", i , f); | 
|  | #2 fact (2) <   | |    |     o------+--|      } | 
|  | |  | |  ->|------------|  |    } | 
|  | |  |  -+--+-----o      |  | | 
|  | = |   |  |============|  | | 
|  | |  |   |  |   n = 1    |  | | 
|  | |  |   |  |------------|  | | 
|  | #1 fact (1) <   |   |  |     o------+--| | 
|  | |  |   |  |------------|  | | 
|  | |   ---|--+-----o      |<-+------- FP | 
|  | =     |  |============|  |                   | | 
|  | |      |  |   n = 0    |  |                   | | 
|  | |      |  |------------|  |                   | | 
|  | #0 fact (0) <       |  |     o---------                    | | 
|  | |      |  |------------|                      | | 
|  | |       --+-----o      |<--------- SP         | | 
|  | =        |============|                      | | 
|  | |         |  Red Zone  |                      v | 
|  | |         \/\/\/\/\/\/\/                 Direction of | 
|  | #-1         <          \/\/\/\/\/\/\/                 stack growth | 
|  | |         |            | |