Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/02/2011, 05:26
BoKeRoN18
 
Fecha de Ingreso: noviembre-2007
Mensajes: 208
Antigüedad: 16 años, 5 meses
Puntos: 2
explicacion logica recursividad??

hola amigos, estoy aprendiendo recursividad pero no le pillo la logica. Os pongo un ejemplo:


unsigned sumanaturales( unsigned n )
{
int suma;

if( n>0 )
{
return suma = n + sumanaturales( n-1 );
}
else
{
suma = 0;
}


}

int main() {
int n,suma;

cout << "Introduce n: " << endl;
cin >> n;

suma = sumanaturales(n);
cout << "La suma es: " << suma;
return 0;
}

No entiendo porque hay que poner el else{suma=0} es algo que me ha dicho mi profesora pero no entiendo porque, y tampoco entiendo donde devuelve el control de flujo el programa ya que imaginaros cuando envia n=1 entonces enviaria un n=0 aqui: return suma = n + sumanaturales( n-1 );

por tanto no deberia volver a entrar en el if( n>0 ) y por tanto no deberia devolver el valor suma... nose estoy echo un lio haber si me podeis ayudar