CIS 110B Lecture Notes - Sec. 13.1 and 13.2 - Recursion
Recursion to Execute a Task
- Recursion is when a function calls itself.
- This is actually quite simple, but it can be a mind-bender.
- Each time a function is called (even if the function is calling itself) a new activation frame is
created on the main memory's stack. So each time a function is called, a new instance of the function is
given its own distinct memory space.
- Recursion is an alternative to iteration (looping). Any loop can be written with recursion instead
of iteration.
- recursivePrint.cpp - Simple recursion example using pointer
arithmetic
Recursion to Calculate Values
- Remember that recursion is when a function calls itself.
- Recursion can be used to produce output like we saw last time, but it can also be used to calculate
a value.
- Many calculations can be defined recursively, so translate themselves easily to recursive functions.
(e.g. factorial or exponents)
- Any recursive function must have a way of stopping the recursion, so that infinite recursion doesn't
result (just like you have to avoid infinite loops)
- So the general formula for writing a recursive function is to have a "base case" in which a simple
value is returned, and the rest of the cases in which another call to the function will lead us to the
value. All cases must eventually reduce to a base case in order to avoid infinite recursion.
- recursiveFac.cpp - Simple recursion example to calculate
factorial
Return to main CIS110B page