| Recursion is the ability for a function to call itself. Normally
for a function to be called it must be created and then called from task
main. However, with recursion a function can call itself multiple
times; the downside of this is that until a function reaches its end
brace '}' or reaches a 'return' command, it will stay in memory. This
can lead to situations where the available memory fills up with too many
concurrently running functions and causes a crash. Recursion in ROBOTC
works on a "Last In First Out" (LIFO) process; the most recent function
called will be the first one closed when a return command or an end
brace '}' is reached.
|For example, see the program below. First, a function called
'looping' is created and initialized. Inside of it there is a single
'return' command, which exits the function and 'returns' the program
flow back to where the function was originally called from. Next, there
is task main with a single call to the function 'looping'.
|When the program runs, the function 'looping' is created and the
program starts at task main. The first command in task main is to call
the function 'looping'. The Call Stack debugger window shows both task
main and the function 'looping' being in memory at this point.
|After 'looping' is called, its first command is to return to task
main. This ends the function and clears it from memory (since the
function has been exited, this can be seen in the Call Stack debugger