Quote Originally Posted by Jefff
Now I feel tempted to put a goto at the end of each function that leads the user back to the original menu. Seems practical. Would it be a really bad idea to do this?
Give it a try and see if you can even do that. (Hint: you cannot goto a label in a different function.)

Quote Originally Posted by Jefff
I am not trying to jump around on this question, but I really want to know why I am not supposed to use it.
Suppose you were able to do what you wanted to do. You would effectively tie the implementation of each of those functions to the implementation of the main function. This is bad for reusability and maintenance.

Quote Originally Posted by Jefff
I think the alternative to it would be to pack the whole menu into a function itself that is called at the end of the other functions, but that does not look thaaat more elegant to me.
Instead of trying to use mutual recursion, use iteration: while the user has not selected the exit option, display the menu, read the option, etc.