So I've got another problem with a program. It's not really that big of a deal, but I can't seem to figure out why it's not working. I searched, but I couldn't find anything related to this. I've got a geometry calculation program, you decide which shape you want to calculate for, and then the actual calculation. Then you input the values necesary for the calculation. The program calculates, and outputs the answer. Finally it returns to the menu, incase you need to do more calculations. Everything works but returning to the menu() function, and I can't figure out why.
Any help is greatly appreciated. Thanks!


Code:
#include <iostream>
#include <string>
#include <math.h>

//Funtion prototypes.
void menu();
int which_calc();
void calc_circle();
void calc_rectangle();
void calc_triangle();

using namespace std;

int main()
{
    menu();
    system("pause");
    return (0);
}

void menu()
{
    int choice = 0;
    do
    {
        cout << "Which formula would you like to use?\n\n";
        cout << "   1.  Calculate for a circle\n";
        cout << "   2.  Calculate for a rectangle\n";
        cout << "   3.  Calculate for a triangle\n";
        cout << "   4.  Quit\n";
        cin >> choice;
        if (choice < 1 || choice > 4)
           cout << "Please enter a correct menu number\n";
    }while (choice < 1 || choice > 4);
    
    switch(choice)
    {
         case 1: cout << "You chose calculate for a circle\n\n";
                 calc_circle();
                 break;
         case 2: cout << "You chose calculate for a rectangle\n\n";
                 calc_rectangle();
                 break;
         case 3: cout << "You chose calculate for a triangle\n\n";
                 calc_triangle();
                 break;
         case 4:
                 break;    
    }//!End of switch/case
    return;
}

/*
Function whichCalc() gets rid of several lines of repeating code
by asking which calculation they want and returning int choice.
*/
int which_calc()
{
    int choice = 0;
    do
     {
         cout << "Which calculation would you like?\n\n";
         cout << "   1. Circumference\n";
         cout << "   2. Area\n";
         cin >> choice;
         if (choice < 1 || choice > 2)
         {
           cout << "Please enter a correct menu number\n";
         }
     }while(choice < 1 || choice > 2);
     return(choice);
}

void calc_circle()
{
     int choice = which_calc();
     double radius, area, circumference;
     const double PI = 3.141592654;
     
     cout << "Please enter radius: ";
     cin >> radius;
     
     if (choice == 1)
     {
         cout << "The circumference of a circle with a radius of " << radius 
              << " is " << (2 * PI * radius) << endl;
     }
     else
     {
         cout << "The area of a circle with a radius of " << radius 
              << " is " << (PI * PI * radius) << endl;
     }
     menu();  //This is where I want it to return to the original menu.
}