User blog comment:BlauesWasser/How do you come up with growth rates for functions?/@comment-35470197-20180823224613

Usually, we need to estimate upperbounds of functions in a step-by-step way. Especially, your functions are good exercise of analysis, because they are defined in a step-by-step way.

For example, in order to estimate your \(\{a,b\}), we need to know the growth rate of \(a^a\). For this purpose, it suffices to check \(n^n \leq f_i(n)\) or not for \(i = 0,1,2,3,\ldots\). If you find an \(i\) with \(n^n \leq f_i(n)\), you obtain \(\{a,b\} \leq f_i(\max(a,b))\).

Next, you can use the result above to estimate \(\{a,b,c\}\), because it is given as the repetition of \(\{a,b\}\). (Recall that a function in fgh is defined by repeating the previous functions.)

Continuing the process, you can estimate \(\{a_1,\ldots,a_{n+1}\}\) using the results for \(\{a_1,\ldots,a_m\}\) with \(m < n\) by induction on \(n\).

Here "Step-by-step" means starting from the easiest cases and analysing the next easiest case using them.