La recursividad no es la mejor forma de resolver problemas en un lenguaje como C o C++. Aun asi, siempre es bueno saber que existe esa propiedad.
En realidad es muy sencillo.
tienes el factorial de 4( 4! ).
entonces, como te dicen.
4*3! que es -> return numero*factorial(numero-1)
Como veras, se vuelve a llamar a la funcion factorial, pero esta vez tiene 3 en ez de 4, por lo que queda.
3*2! return numero*factorial(numero-1)
Lo mismo.
2*1!
cuando numero es 1, ya no se llama a la funcion factorial, en su lugar solo devuelve uno.
if(numero<=1)
return 1;
Entonces ya tenemos el primer valor y se sale de la ultima funcion factorial y el uno devuelto se multiplica por el 2 y luego el valor devuelto se multimplicapor 3 y en la primera funcion llamada, por 4. Y finalmente sale del "ciclo".
Imaginatelo como un ciclo:
Cita: int numero, factorial=1;
for(numero=4; numero >=1; numero--)
{
factorial=factorial*numero;
}
Creo que este codigo es mucho mas legible que al usar recursividad, y aparte digamos que ahorras algo de pila(stack). Jjejeje. Imaginate el factorial de 100?
Saludos