Donald Knuth’s up-arrow notation is based on the fact that multiplication can be viewed as *iterated addition* and exponentiation as *iterated multiplication*. A single arrow just represents exponentiation. Multiple arrows means iterating the operation associated with one less arrow. So if you have 2 arrows, that’s *iterated exponentiation*, or **tetration**. If you have 3 arrows, that’s *iterated tetration*, or **pentation**. So on and so forth.

The general definition of the notation is as follows:

Because I love recursion and the definition uses recursion (and because reddit’s Daily Programmer Challenge #365 told me to), I decided to give this a shot in C#. It’s actually really easy to do in a few lines of code.