The operating system usually allocates a relatively small amount of memory to the stack (where function parameters and local variables are stored). If there are large differences between n1, n2 and n3, then your program will make many many recursive calls which will use up all the space on the stack. If you enter 1000000 2 3, I suspect it will crash.
It's possible to tell the linker to allocate more space to the stack, but the details depend on the compiler itself. With this function, a large enough input will almost certainly kill the program. Try restricting your inputs to numbers less than 100. That should let you see how the recursion works.