One task that must be performed during execution of a function f() is to keep track of enough information about f() -parameter values, local variables, and so on1 -that, when execution of f() is interrupted by a call to another function g(), execution of f() can resume when g() terminates. Obviously, g() might call another function h() so that information about g() must be stored so it can resume execution later. And h0 might call another function, and so on. Complicating the situation is the possibility that one of these functions might also call itself-a phenomenon known as recursion (which we will study in Chapter 10). How should this function information be stored?