uses an accumulator so fib no longer has exponential running time