You get a stack overflow when something gets into an infinite function call loop, like this
public void MethodA()
{
MethodA();
}
In the above MethodA calls itself and every time this happens it reserves space on the stack but the stack is finite so eventually it calls itself so many times the stack runs out of space.
In your code Cummulative calls PreviousBalance which calls Cummulative so if you try and access PreviousBalance you end up in an infinite call loop.