calc is an int function. When you call calc recursively, what happens to the result of calc when it returns? Also note that after calc returns, you fall through to the bottom of calc without returning a value. Your compiler should have flagged this as a problem.
PLEASE USE CODE TAGS (the <> formatting button) when posting code. http://v2.cplusplus.com/articles/jEywvCM9/
It makes it easier to read your code and it also makes it easier to respond to your post.