My algorithm textbook has a theorem that says 

'For every $r > 1$ and every $d > 0$, we have $n^d = O(r^n)$.'

However, it does not provide proof.

Of course I know exponential grows faster than polynomial in most cases, but is it true for all case?

What if the polynomial function is something like $n^{100^{100}}$ and exponential is $2^n$? Will the latter outgrow the former at some point?
['https://math.stackexchange.com/questions/499446', 'https://math.stackexchange.com', 'https://math.stackexchange.com/users/95794/']
Yes, it is true for all cases. This can be seen by noting that

$$\lim\_{n\to\infty} \frac{n^k}{e^n} = 0$$

for any $k$. This can be seen by an application of L'Hospital's rule a number of times, or by using induction as [here](https://math.stackexchange.com/questions/55468/how-to-prove-that-exponential-grows-faster-than-polynomial).
Let $n = k^2$.

Then $n^c = k^{2c}$ and $2^n = (2^k)^k$.

Clearly $2^k \ge k+1 > k$ so all we need is $k > 2c$.

In general if we want to find $n \in \mathbb{N}$ such that $r^n > n^c$ where $r > 1$, we can do essentially the same:

Let $n = ak^2$ where $a > \log\_r(2)$.

Then $r^n > (2^k)^k$ and $n^c = a^c k^{2c}$.

It is then enough to choose $k$ such that $k > a$ and $k > 3c$, so that $n^c < k^{3c} < (2^k)^k < 2^n$.