Warrior, I can't believe nobody has pointed this out. Recursion is in fact a looping construction. However, loops are not always recursive.
It's like this:
Set(Programming constructs) = { Loops, Assignments, Expressions, Functions }
Set(Loops) = (Recursive loops, While loops, For loops, Do loops }
Or, if you want to think of it this way:
class Loop : ProgrammingIdea
{
...
}
Class Recursion : Loop
{
...
}
You can implicitly cast a Recursion object to a Loop object. However, you cannot safely cast a Loop object to a Recursion object.