Hi. I meant to go into this in a bit more detail after using it in some of my scripts. Recursion is a pretty interesting idea and it’s used quite a bit in scripting. I’ll describe it below and then I’ll jump into an example using PowerShell in the next post.
According to Wikipedia;
Recursion is the process of repeating items in a self-similar way. For instance, when the surfaces of two mirrors are exactly parallel with each other, the nested images that occur are a form of infinite recursion.
In Computer Science and scripting it’s used to define a problem (or to solve a problem) in terms of itself.
An example would be how to define a Russian Doll. One way to define it would be to use recursion;
A Russian Doll is a doll that contains another, smaller Russian Doll.
In this case there is some end-point where the dolls can’t contain anything smaller because of the restrictions of reality. In computer-space this restriction doesn’t always apply.
An example would be using a computer to work out a number raised to a power (exponent). Here’s some pseudo-code;
function Power (Base, Exponent) { if (Exponent=0) return 1; Return (Base * Power (Base, Exponent -1); }
The Power function is defined in terms of itself. If we wanted to calculate 10 to the power 3 we’d call the function with Power (10, 3) and the following would happen;
- Power is called with Base=10 and Exponent=3
- Exponent doesn’t equal 0 so we skip the first line of the function.
- Power returns 10 * (Power (10, 2).
- Power is called with Base=10 and Exponent=2
- Exponent doesn’t equal 0 so we skip the first line of the function.
- Power returns 10 * (Power (10, 1).
- Power is called with Base=10 and Exponent=1
- Exponent doesn’t equal 0 so we skip the first line of the function.
- Power returns 10 * (Power (10, 0).
- Exponent equals 0 so we return 1.
- We can now return all the values that have been held waiting for each call of Power to return a value; 10 * 10 * 10 * 1
- 1000 is returned.
Another (jokey) example is the dictionary definition of recursion;
Recursion : See Recursion.
In the next post we’ll look at using PowerShell and recursion to calculate the size of a folder.