Hi absar
A recursive trigger is one that performs an action, such as an update or insert, which invokes itself owing to, say something like an update it performs.
eg in a before trigger, if you select some records and update them, the trigger will invoke itself.
To avoid, static variable 'locks' are used. Illustrated in the salesforce doc
"Static variables are only static within the scope of the request. They are not static across the server, or across the entire organization.
Use static variables to store information that is shared within the confines of the class. All instances of the same class share a single copy of the static variables. For example, all triggers that are spawned by the same request can communicate with each other by viewing and updating static variables in a related class. A recursive trigger might use the value of a class variable to determine when to exit the recursion."
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_static.htm