Si en el main llamas a una funcion cualquiera, y desde ella pones un return, vas volves al main.
Ahora si desde una funcion f llamas a la funcion f nuevamente, al poner un return desde la funcion f vas a volver a la funcon f pero desde donde fue llamado.
Para entender un poco mejor eso te recomiendo que imprimas en pantalla y vas a poder seguir la ruta:
Código C++:
Ver originallong int potencia (int b, int e)
{
long int temporal;
cout << e;
if (e==1) //pieza 1
{
return b; //caso base
}
else //pieza 2
{
cout << "llamo a potencia con" << b << " y " << e -1;
temporal = potencia(b,e-1);
return b*temporal; //paso recursivo
}
}
Fijate si podes entender mejor como funcionan los llamados.