en 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 e...

Pregunta de la clase:
Recursividad
Andres Troaños

Andres Troaños

Pregunta
studenthace 5 años

en 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?

5 respuestas
para escribir tu comentario
    Sary Libreros

    Sary Libreros

    studenthace 5 años

    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

    Miguel Torres

    studenthace 5 años

    Pongamos como ejemplo factorial(3) y empecemos desde el caso base n == 1:

    • 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.

    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

    Andres Troaños

    studenthace 5 añ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

    Miguel Torres

    studenthace 5 años

    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. 🤓

Curso de Pensamiento Computacional con Python

Curso de Pensamiento Computacional con Python

Comienza tu camino en el desarrollo de software con el lenguaje de programación Python. Entiende la estructura de pensamiento necesaria para resolver problemas en programación. Domina las estructuras de control para crear soluciones. Conoce las características de Python que te permiten reutilizar código. Prueba tu código e implementa correcciones y mejoras.

Curso de Pensamiento Computacional con Python
Curso de Pensamiento Computacional con Python

Curso de Pensamiento Computacional con Python

Comienza tu camino en el desarrollo de software con el lenguaje de programación Python. Entiende la estructura de pensamiento necesaria para resolver problemas en programación. Domina las estructuras de control para crear soluciones. Conoce las características de Python que te permiten reutilizar código. Prueba tu código e implementa correcciones y mejoras.