Page:Scheme - An interpreter for extended lambda calculus.djvu/18

 the number of bits needed to express factorial of n grows with n; but this is a property of the numbers calculated by the function which is implemented in iterative style, and not of the iterative control structure itself. A recursive control structure inherently creates expressions of unbounded size as a function of the recursion depth, while an iterative control structure produces a cycle of equivalent expressions, and so the expressions are of approximately the same size no matter how many iteration steps are taken. This is the essence of the difference between the notions of iteration and recursion. Hewitt [MAC, p. 234] made a similar observation in passing, expressing the difference in terms of storage used in program execution rather than in terms of intermediate expressions produced by substitution semantics.

Continuation Passing Recursion
Remember the other way to compute factorials?

This looks iterative on the surface! but in fact it is recursive. Let's compute, where   is a continuation which is to receive the result of   applied to  ; that is, the last thing   should do is apply the continuation   to its result.