The answers given above are great, but here's an addition that would make this question page complete. I'm assuming that you've read the link in the answer above, and know about Big-O, Theta and Omega notation.
I guess what you're asking is: is there an f(n)
such that f(n) = O(f(n))
?
Maybe. But there are many cases where where f(n) = Θ(f(n))
. This happens when f(n) = T(f(n))
i.e. a function that inputs an integer and outputs an integer is defined the same way as the time function.
This is especially true of the Fibonacci series function. I started typing out a proof, but will defer in favour of this answer: https://stackoverflow.com/a/360773/11252937
In case the link goes down, here's an excerpt:
You model the time function to calculate Fib(n) as sum of time to calculate Fib(n-1) plus the time to calculate Fib(n-2) plus the time to add them together (O(1)). This is assuming that repeated evaluations of the same Fib(n) take the same time - i.e. no memoization is use.
T(n<=1) = O(1)
T(n) = T(n-1) + T(n-2) + O(1)
You solve this recurrence relation (using generating functions, for instance) and you'll end up with the answer.
Alternatively, you can draw the recursion tree, which will have depth n and intuitively figure out that this function is asymptotically O(2^n). You can then prove your conjecture by induction.
Base: n = 1 is obvious
Assume T(n-1) = O(2^(n-1)), therefore
T(n) = T(n-1) + T(n-2) + O(1) which is equal to
T(n) = O(2^(n-1)) + O(2^(n-2)) + O(1) = O(2^n)
However, as noted in a comment, this is not the tight bound. An interesting fact about this function is that the T(n) is asymptotically the same as the value of Fib(n) since both are defined as
f(n) = f(n-1) + f(n-2).
The leaves of the recursion tree will always return 1. The value of Fib(n) is sum of all values returned by the leaves in the recursion tree which is equal to the count of leaves. Since each leaf will take O(1) to compute, T(n) is equal to Fib(n) x O(1). Consequently, the tight bound for this function is the Fibonacci sequence itself (~θ(1.6^n)). You can find out this tight bound by using generating functions as I'd mentioned above.