A function is recursive when it calls itself with another value for its argument. After a number of recursive calls, a base case must be reached that ends the recursion (otherwise it will go on indefinitely). A common example is the calculation of the factorial of a number, which goes like this:
4! = 4 x 3 x 2 x 1 = 4 x 3! = 4 x 3 x 2! = 4 x 3 x 2 x 1! = 4 x 3 x 2 x 1 x 0! = 24 with the base case—0! = 1.
This can be easily translated into a Red fact function:
fact: func [n][ if n = 0 [ return 1] n * fact n - 1]fact 4 ; 24
Here we used func, but, sometimes, recursion may need local variables, and function will then be more useful, because, for a function, locals are the default.
Now evaluate the following:
fact 4.0 ;(1) ...