^ ->| | 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 | | |