this function does not use any explicit loops repetition is provided by the repeated recursive invocations of the function there is no circularity in this definitionbecause each time the function is invokedits argument is smaller by oneand when base case is reachedno further recursive calls are made we illustrate the execution of recursive function using recursion trace each entry of the trace corresponds to recursive call each new recursive function call is indicated by downward arrow to new invocation when the function returnsan arrow showing this return is drawn and the return value may be indicated alongside this arrow an example of such trace for the factorial function is shown in figure return factorial( return = factorial( return = factorial( return = factorial( return factorial( figure recursion trace for the call factorial( recursion trace closely mirrors the programming language' execution of the recursion in pythoneach time function (recursive or otherwiseis calleda structure known as an activation record or frame is created to store information about the progress of that invocation of the function this activation record includes namespace for storing the function call' parameters and local variables (see section for discussion of namespaces)and information about which command in the body of the function is currently executing when the execution of function leads to nested function callthe execution of the former call is suspended and its activation record stores the place in the source code at which the flow of control should continue upon return of the nested call this process is used both in the standard case of one function calling different functionor in the recursive case in which function invokes itself the key point is that there is different activation record for each active call