11 AnswersNew Answer
Difficult to understand and recursion depth quickly outruns the stack memory available. for more information see here https://en.m.wikipedia.org/wiki/Recursion
There is solution for problems with stack memory in Python. From functools import lru-cache and from sys import setrecursionlimit.
It can increase recursion depth but it is language specific. Not all languages provide options to increase the recursion depth from the program itself. For many language you need to specify the option as a compiler options. Tail recursion can improve the performance though. The fact remains recursion is difficult to understand, yet for some problems it is the optimal solution.
If you mess up the base case, you get infinite recursion and a stack overflow.
What about it's understanding, you're right)
Thank you for answer) Recursion is the one thing that was making me problems during my learning.
Reduce wastage of time for writing the code
From my experience as ~ swim ~ said it can be difficult to understand especially if not written properly also the maximum recursion depth (1000 in python by default) is reached very quickly. But there are problems that have a recursive nature embedded in their cores that they can only be solved using recursion or otherwise are very very difficult to impliment using loops. For exemple solving a Hanoi tower in recursion is suprisingly easy compared to loops (and i don't even know if it can be done that way). So, i recommend using loops if possible and use recursion when the solution necessits it.
I tried to find the solution of Tower by using loops, and also didn't find it. Usually I use recursion if there's really necessary.
The major disadvantage is complexity of program..and the stack size
Don't forget about the base case - is just very important rule, not disadvantage, I think.. It's like a situation in infinite loops.