Say I have an algorithm which operates on an input of size n and I know that the time it takes for n is twice the time it takes for n-1. I can observe in this simple case (assuming it takes, say, 1 second for n = 0) that the algorithm takes 2n seconds.
Is there a general method for converting between recursively-defined definitions to the more familiar direct type of expression?
“Recursive functions” like this are called Recurrence Relations, and their “direct types” are known as the Closed-form solution.
While the Master Theorem listed by Poita is very helpful in computing time-complexity, it has nothing to do with actually solving recurrence relations.
Wikipedia and Wolfram’s Math World (under “See Also”) list the closed-forms of some common classes of recurrence relations. However, complicated (non-linear) recurrence relations can be very difficult to find closed-form solutions to, if one exists at all. There is no general algorithm for solving them.