An Improvement
procedure F(n) returns integer {
   R: array[0..n] of integer;
   R[0] = 1; R[1] = 1;
   for i = 2 to n do
     R[i] = R[i-1] + R[i-2];
   return R[n];
}
Instead of recomputing F(5)
over and over, we compute it
once and remember it
This is a simple example of
Dynamic Programming
Analysis
Time = O(n)
Space = O(n)
Can improve again to use
just O(1) space
How?
CS409 - Spring 2000
3