Hmm... An array is certainly the wrong way to go. Perhaps a little illustration will help:
Code:
f(n)
   return g(f(n-1)); // Where g does some operation (add, multiply, take the square root and add 2, etc

f(n-1)
   return g(f(n-2)); // Same deal

...

f(r) // r is base case
   return k; // Where k does not depend on f(t) for any t (i.e. no more recursion).
Note that f(n) and f(n-1) did exactly the same thing, with their particular input values being the only changing factor. No array was needed.

I'd give an example, but it is hard to give one that doesn't immediately give away the solution to the factorial problem.

Think in terms of the function stack: f(n) has not returned until f(n-1) returns, until f(r) returns for the base case, r. So, you know that 1! = 1, and you know the basic formula for factorials. Now what is the 'g' function from the above pseudo-code?