In my opinion recursion has an advantage over looping when the we need to store a large amount of data in each cycle (that is one loop).
In looping one would need to store this data in new variables each time whereas recursion provides a more elegant way of doing so by employing stacks.
recursion can be usefull in algorithms like backtracking and dynamic programming algorithms ...but before making use of recursion make sure tht ur program terminates after some condition fails r else it may end up in stack overflow and the system may hang up....
Recursion is efficient in terms of logic less time comsumption of programming but are more memory consuming as memory acess are usally slow so make it slow in terms of run time
loops are difficult to programme but are more efficient as we are not using one function again and again and are using counters
For some applications recursive algorithm is much more simpler then corresponding looping algorithm, for example if you want to access the elements of singly linked link list in reverse order.
Also many mathematical algorithms can be implements in more natural way using recursive algorithm i.e. your implementation will look exactly same as mathematical definition of that algorithm, for example factorial and Fibonacci.