This is to take up an arbitrary amount of memory. To handle what happens after the recursion, the system has to "stack" the states of each recursed operation on top of each other, taking up more memory as more is stacked. There has to eventually be a point where the system cannot stack any more, and the stack is blowed, causing the project to crash. In mobile devices it will restart the page because that's how mobile devices handle every crash. In Scratch 2.0, no refresh blocks are completely dynamic, so they soft-crash the project before any stack advance is ever displayed.