12/02/2011, 05:26
|
| | Fecha de Ingreso: noviembre-2007
Mensajes: 208
Antigüedad: 17 años, 2 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 |