Limits of recursive functions
Recursive functions have a performance penalty. When creating a recursive function call, we are copying over the state from one function stack to the next. This involves copying a lot of data into our working memory, but additional computational overhead is required to make the function call itself happen. The main limitation of solving problems recursively, at least in Go, is that we will eventually run out of space to make the recursive call happen. The other limitation is that a recursive solution is often slower than an iterative one.
Measuring the performance of recursive versus iterative solutions
Before we look at the implications for the space our programs are using during recursive function calls, let’s compare the performance of recursive and iterative solutions that fit within our working memory. To demonstrate this, we will use the same iterative and recursive solution to the factorial problem that we saw at the start of this chapter...