Answer
stack-overflow exception is caused when there are lot of recursive calls and the recursive stack fills the memory.
Work Step by Step
When a recursive call is made the current state of the function is stored in a stack, so after each recursive call the state of function is stored in the recursive stack. When a lot of recursive calls are made the recursive stack completely fills the memory and no new call can be made in such situation stack overflow exception occurs.