WEBVTT 00:00:00.667 --> 00:00:02.733 Lo que quiero hacer en este video es poner en claro 00:00:02.733 --> 00:00:04.200 la diferencia entre 00:00:04.200 --> 00:00:07.200 una definición de función irativa, o debería decir iterativa, 00:00:07.200 --> 00:00:08.400 siempre lo pronuncio mal 00:00:08.400 --> 00:00:10.800 definición de función iterativa 00:00:10.800 --> 00:00:15.667 y una definición de función recursiva. 00:00:15.667 --> 00:00:21.267 Lo haremos realmente por...justo como que entendemos donde la iteración está sucediendo 00:00:21.267 --> 00:00:24.133 aquí y donde la recursión está sucendiendo aquí a la derecha. 00:00:24.133 --> 00:00:28.333 Entonces cuando comenzamos vemos que 'product' lo hacemos igual a 1 00:00:28.333 --> 00:00:36.533 y entonces entramos nuestro ciclo 'for' y el ciclo 'for' es realmente el meollo de la definición de la función iterativa. 00:00:36.533 --> 00:00:40.333 Y entiendiendo lo que está pasando en el ciclo 'for' hagamos...hagamos una tablita aqui. 00:00:40.333 --> 00:00:49.641 Así que voy a hacer una tabla para el valor de nuestra variable i y también voy a descifrar el 00:00:49.641 --> 00:00:54.200 valor de 'product' multiplicado por i + 1, 00:00:54.200 --> 00:00:59.400 porque cada iteración en este ciclo 'for' vamos a evaluar este asunto justo aquí 00:00:59.400 --> 00:01:07.133 y luego voy a hacer una columna para el nuevo valor de nuestro 'product', el nuevo valor de nuestro 'product'. 00:01:07.133 --> 00:01:11.800 Subrayemos estas cosas y luego tenemos el nuevo valor de nuestro 'product'. 00:01:11.800 --> 00:01:17.733 Así que aprendimos en muchos videos anteriores que en Python decimos 'for i in range'. 00:01:17.733 --> 00:01:20.067 Este 'range' de aquí,... 00:01:20.067 --> 00:01:26.400 Este 'range' de aquí regresa una lista y regresa una lista del número de elementos 00:01:26.400 --> 00:01:29.733 como el número que hemos pasado... Lo pasamos aqui. 00:01:29.733 --> 00:01:32.333 Si asumimos y debería de haber dicho desde el principio. 00:01:32.333 --> 00:01:35.800 Asumamos que estamos llamando sólo para hacer algo específico, 00:01:35.800 --> 00:01:45.333 digamos este es el resultado de llamar el factorial de 3. 00:01:45.333 --> 00:01:51.933 Entonces el argumento que pasamos a este factorial es 3. La variable 'number' se referirá a 3. 00:01:51.933 --> 00:01:58.800 Cuando llamas 'range' de 'number', literalmente regresará una lista: 0, 1, 2. 00:01:58.800 --> 00:02:03.733 Entonces 3 elementos comenzando con 0, el último elemento es 3 - 1. Es 2. 00:02:03.733 --> 00:02:09.600 Y entonces cada ciclo a través de este ciclo 'for' se le va a asignar i a cada elemento sucesivo 00:02:09.600 --> 00:02:10.667 en la lista. 00:02:10.667 --> 00:02:14.933 Entonces la primera vez a través de este ciclo 'for' se le va a asignar a i un 0. 00:02:14.933 --> 00:02:18.133 Nuestro i va a referir al 0. 00:02:18.133 --> 00:02:25.800 Y entonces 'product' multiplicado i - 1, bueno en este primer ciclo, 'product' apareció antes de que 00:02:25.800 --> 00:02:28.400 si quiera entrara en el ciclo, 'product' se definió como 1. 00:02:28.400 --> 00:02:36.667 Entonces 'product' va a ser 1 y esto es 1 multiplicado por --No quiero hacerlo en ese color, sólo lo haré 00:02:36.667 --> 00:02:47.667 en magenta...Lo haré en magenta--1 multiplicado por i, que es 0. 1 multiplicado por 0 + 1. 00:02:47.667 --> 00:02:53.533 Más 1 y esto...y entonces nuestro nuevo valor de 'product' es esencialmente esto evaluado. 00:02:53.533 --> 00:02:54.667 Lo tenemos bien aquí. 00:02:54.667 --> 00:02:56.667 'Product' es igual a todo este asunto.