Os pongo un ejemplo y os presento mis dudas:
Código:
#include <iostream>
#include <string>
using namespace std;
void invertir(){
string tmp;
if(cin >> tmp){
invertir();
cout << tmp << endl;
}
}
int main(){
invertir();
}
Este código lo que hace es invertir palabras. Por ejemplo, yo le entrego tres nombres: Jaime, Ramon, Pablo y me devuelve Pablo, Ramon, Jaime.
No entiendo como lo hace, quiero decir, la función entra en un bucle mientras le estén introduciendo datos, pero es que cuando esta dentro de el bucle vuelve a llamarse a si misma, y entonces nunca llegaría al cout << tmp << endl; no? Pues cuando se acabe de introducir datos no entrara al bucle i no passara por el cout.
Ademas, como la variable tmp puede guardar tantos nombres ? No se deberían machacar, quiero decir al poner Jaime i en la siguiente vez Ramon, no se machaca la variable ? Porque sino es que escribe el cout cada vez que pasa por el bucle(que es lo que supongo que pasa) pero no se como lo hace entonces.
No se si me he explicado bien, espero que me podáis ayudar.
En el caso del factorial recursivo me pasa mas o menos lo mismo, no acabo de entender como se guardan los datos, si se deberian machar, etc.
Muchísimas gracias!!
Adiós!