
Andres Troaños
Preguntaen el ejemplo, en la linea 10 esta return n * factorial(n-1), ese factorial porque se escribe? y que es?, es una función ya de py y por eso se hacen las multiplicaciones de todos los elementos?
se supone que el return que esta al final lo retorna a n?
y con ese if n == 1 es cuando el programa deja de funcionar? en que momento es que se hacen las multiplicaciones de los resultados?
- Cuando n == 1 este 1 es el valor que se retornará cuando se llamó factorial(2 - 1).
- Cuando n == 2 ahora se conoce que factorial(2 - 1) es igual 1, por lo tanto 2 * factorial(2 - 1) = 2 * 1 es el valor que se retorna a factorial(3 - 1).
- Finalmente cuando n == 3 se retornó el valor de factorial(3 - 1) y es igual a 2, por lo tanto 3 * factorial(3 - 1) será 3 * 2 igual 6.

Axel Yaguana
No, factorial no es una función por defecto de python. . . Ese factorial quiere decir que vuelve a llamar la función desde dentro de la función en sí. Es como hacer un loop for. . . Te dejo los enlaces con los que me quedó más claro la recursividad. https://www.w3schools.com/python/gloss_python_function_recursion.asp#:~:text=Python%20also%20accepts%20function%20recursion,data%20to%20reach%20a%20result. . https://youtu.be/3D9_vkYe1Zo
Sary Libreros
Hola amigo! A mi me sirvio bastante entender las bases matemáticas de los factoriales para comprender mejor lo que explica la clase, te dejo este video para que lo revises :)
Miguel Torres
Pongamos como ejemplo factorial(3) y empecemos desde el caso base n == 1:
Como verás son capas cque van devolviendo desde lo más interno porque en una función recursiva se van haciendo invocaciones una y otra vez hasta que se llega al caso base y se comienzan a devolver los valores. En este caso esto pasa cuando n == 1.

Andres Troaños
@datormx, gracias pero disculpa :( sigo sin entender, donde se guardan los valores que van resultando?
en que se momento se multiplica todo los valores?
y cuando esta en la linea 10 de return como es la operación se supone que es
10 * factorial(10-1) 10 * factorial(9)
y en este momento ese nueve se retorna a donde? y la operación seria 9*factorial(8-1) o como seria es que no entiendo como se ejecuta el código y como se guardan los valores
def factorial(n): """ Calcular el factorial de n. n int > 0 returns n! """ print(n) if n == 1: return 1 return n * factorial(n - 1) n = int(input("ingresa un entero: ")) print(factorial(n))```
Miguel Torres
Hello, @andres-troanis. :)
La función factorial() debió ser definida en el programa. En esa línea solo la estás invocando. No es una función nativa de Python.
Cuando se cumple la condición determinada (parece que en este caso es (if n == 1) las funciones van retornando sus valores de forma recursiva a la invocación anterior y así sucesivamente hasta llegar al punto en que invocaste la función original. Son como capas, eso es lo padre de la recursividad. 🤓