Recursion: When a procedure calls itself either directly or indirectly.

Example 1
CODE
Procedure DoSomething
 Call DoSomething  // <- this is a direct "recursive call" to DoSomething
End


Example 2
This example use MakeSpikes & SellSpikes as an example relevant to the current Spike money macros:

CODE

Procedure MakeSpikes
 // Some spike making code goes here
 Call SellSpikes
End

Procedure SellSpikes
 // Some spike selling code goes here
 Call MakeSpikes
End

Call MakeSpikes
SendText 13, Done  


This is indirect recursion. MakesSpikes does not contain a line "Call MakeSpikes". However, it calls SellSpikes, which then calls MakeSpikes.


ACTool does not support recursion well, and has a hard cap of 5000 on how many recursive calls you can make before you get an error.


How to structure the code differently ? Using the spike example again ...

CODE
While 1 = 1 // Loop 'forever'
 Call MakeSpikes
 Call SellSpikes
End

Procedure MakeSpikes
 // Some spike making code goes here
End

Procedure SellSpikes
 // Some spike selling code goes here
End