You are not logged in.
A basic definition of recursion would be "call a subroutine from within the same subroutine". And iteration would be travelling through several objects in a repeat/end repeat statement (items in a list, a growing number, etc.).
Here is the classic example of recursion (a factorial computation):
if n > 0 then
return n * (factorial(n - 1))
And this is the "iteration version":
if n is 0 then return 1
set a to n - 1
repeat while a > 0
set n to n * a
set a to a - 1
And this is a different example, just in case you feel dizziness reading this code (as me). These will return true if "B" is in a given string (false, if it isn't):
on BisIn(str) --> recursion
if str's item 1 is "B" then
return BisIn(text 2 thru -1 of str)
return str is "B"
on BisIn2(str) --> iteration
repeat with i from 1 to count str
if str's item i is "B" then return true
Both concepts share the concept loop, and you may use whatever you find more readable. Be careful, though, with recursion, if you think you may recurse lots of times, as you may get out of memory. When you execute "return again(foo)", the handler will return the result of executing again the handler "again" with parameters "foo". If the result of such execution is executing again the handler "again", you will have then two handlers waiting for a result: the first round, and the second one (waiting for the third execution). And so on... This means that you are storing lots of information in memory (in long recursions) and, depending on application-defined stack's size (the application running the script), you may get a stack overflow error sooner or later.
Brief note about recursion and stack limits: seems that every app defines its owm stack memory limits. For example, if you try this code in current apps' versions in OS X 10.4:
property x : 0
display dialog x
set x to x + 1
This will display "733" in Apple's Script Editor (which seems the default value in most of AS runners), and "23815" in Satimage's Smile.