Cpp Stack Overflow Error Recursive Function