Using Recursion to Program

Functions that call themselves...  (It is a good idea to review and review this example until you understand it.

The canonical programming example is the factorial function n! = (n)×(n-1) ×(n-2)×…×(1) where 0! ≡  1; here is a reasonably clever way to use the fact that (n+1)! = (n+1)×n! try it out...  Ooops, This isn't what was expected, but upon reflection it is correct--we forgot to define a part of the rule. (Note also that the message window produced an error about recursion limits) Add the second part of the definition. Here, we don't use delayed evaluation (:=) because we want to assign a value immediately.     Here is where the recursion limit comes in : our function keeps on calling itself (i.e., recursively). Unless a limit is set the program would keep running forever. Mathematica builds in a limit to how many times a function will call itself:    Speed versus Memory in Functions    Using immediate assignment in a function: spending memory to buy time: Each time the function is called, it makes an extra assignment so that previous values can be recalled if needed. This version takes a bit longer the first time, because we are storing data in memory ...  But, the next time it is called, the result is much faster.   