< Return to Video

TITULO: Comparación de funciones iterativas y recursivas

  • 0:01 - 0:03
    Lo que quiero hacer en este video es aclarar
  • 0:03 - 0:04
    la diferencia entre
  • 0:04 - 0:07
    una definición de función irativa, o debería decir iterativa,
  • 0:07 - 0:08
    siempre lo pronuncio mal,
  • 0:08 - 0:11
    definición de función iterativa,
  • 0:11 - 0:16
    y una definición de función recursiva.
  • 0:16 - 0:21
    Lo haremos realmente por...como que entendamos
    donde está sucediendo la iteración aquí
  • 0:21 - 0:24
    y donde está sucendiendo la recursión aquí
    a la derecha.
  • 0:24 - 0:28
    Entonces cuando comenzamos vemos que 'product'
    lo hacemos igual a 1
  • 0:28 - 0:37
    y entonces entramos nuestro ciclo 'for' y el ciclo
    'for' es realmente el meollo de la definición de
    la función iterativa.
  • 0:37 - 0:40
    Y entiendiendo lo que está pasando en el ciclo
    'for'. Hagamos, hagamos una tablita aqui.
  • 0:40 - 0:50
    Así que voy a hacer una tabla para el valor
    de nuestra variable i y también voy a descifrar el
  • 0:50 - 0:54
    valor de 'product' multiplicado por i + 1,
  • 0:54 - 0:59
    porque en cada iteración en este ciclo 'for' vamos a
    evaluar este asunto justo aquí
  • 0:59 - 1:07
    y luego voy a hacer una columna para el nuevo valor
    de nuestro 'product', el nuevo valor de nuestro 'product'.
  • 1:07 - 1:12
    Subrayemos estas cosas y luego tenemos
    el nuevo valor de nuestro 'product'.
  • 1:12 - 1:18
    Así que aprendimos en muchos videos anteriores
    que en Python decimos 'for i in range'.
  • 1:18 - 1:20
    Este 'range' de aquí,...
  • 1:20 - 1:26
    Este 'range' de aquí regresa una lista y regresa
    una lista del número de elementos,
  • 1:26 - 1:30
    como el número que hemos pasado...
    Lo pasamos aqui.
  • 1:30 - 1:32
    Si asumimos y debería de haber dicho desde
    el principio.
  • 1:32 - 1:36
    Asumamos que estamos llamando sólo para
    hacer algo específico.
  • 1:36 - 1:45
    Digamos, este es el resultado de llamar el factorial de 3.
  • 1:45 - 1:52
    Entonces el argumento que pasamos a este factorial
    es 3. La variable 'number' se referirá a 3.
  • 1:52 - 1:59
    Cuando llamas 'range' de 'number', literalmente
    regresará una lista: 0, 1, 2.
  • 1:59 - 2:04
    Entonces 3 elementos comenzando con 0, el
    último elemento es 3 - 1. Es 2.
  • 2:04 - 2:10
    Y entonces cada ciclo a través de este ciclo 'for'
    se le va a asignar i a cada elemento sucesivo
  • 2:10 - 2:11
    en la lista.
  • 2:11 - 2:15
    Entonces la primera vez a través de este ciclo 'for'
    se le va a asignar a i un 0.
  • 2:15 - 2:18
    Nuestro i se va a referir al 0.
  • 2:18 - 2:26
    Y entonces 'product' por i - 1, bueno en
    este primer ciclo, 'product' apareció antes de que
  • 2:26 - 2:28
    si quiera entrara en el ciclo, 'product' se
    definió como 1.
  • 2:28 - 2:37
    Entonces 'product' va a ser 1 y esto es 1
    por --No quiero hacerlo en ese color, sólo lo haré
  • 2:37 - 2:48
    en magenta...Lo haré en magenta--1 por
    i, que es 0. 1 por 0 + 1.
  • 2:48 - 2:54
    Más 1 y esto...y entonces nuestro nuevo valor de
    'product' es esencialmente esto evaluado.
  • 2:54 - 2:55
    Lo tenemos bien aquí.
  • 2:55 - 2:57
    'Product' es igual a todo este asunto.
  • 2:57 - 3:02
    Nuestro nuevo valor es 1 por 0 más 1
    y eso es exactamente 1 * 1 y eso va a ser 1.
  • 3:02 - 3:05
    Eso es todo lo que teníamos dentro del ciclo 'for',
  • 3:05 - 3:09
    porque esa fue la única cosa que intentábamos
    dentro del ciclo 'for'
  • 3:09 - 3:16
    y entonces vamos a regresar y vamos a
    iterar a través de la siguiente iteración de
    nuestro ciclo.
  • 3:16 - 3:20
    Me supongo que podrías decir 'Y ahora i va a
    tener un 1 asignado.'
  • 3:20 - 3:23
    Entonces ahora i va a ser 1.
  • 3:23 - 3:26
    Esta expresión de aquí, vamos a tomar nuestro
    'product' anterior.
  • 3:26 - 3:40
    Entonces 'product' es aún 1. Por lo tanto 'product'
    es 1 y va a ser multiplicado por i, que ahora es 1 + 1.
  • 3:40 - 3:42
    Y a qué va a ser igual esto?
  • 3:42 - 3:48
    Bueno si evalúas todo esto, obtienes 1 * 2.
    Entonces ahore el nuevo valor de 'product' es 2.
  • 3:48 - 3:53
    Después de nuestra segunda iteración a través
    de nuestro ciclo, nuestra segunda pasada a
    través del ciclo.
  • 3:53 - 4:00
    Ahora regresaremos al comienzo del ciclo
    y a i se le asignará el siguiente elemento
  • 4:00 - 4:03
    de la lista. Se le asignará ahora un 2.
  • 4:03 - 4:06
    Ahora i es 2. Esta cosa de aquí, vamos a tomar...
  • 4:06 - 4:09
    Esto va a ser 'product'. 'Product' ahora es 2.
  • 4:09 - 4:24
    Entonces va a ser 2 por i, bueno i es ahora 2 + 1
    y entonces qué es esto? Es 2 por 3 o sea 6.
  • 4:24 - 4:30
    O 6 y entonces se va y diremos OK, podemos
    asignar i a algún elemento adicional en esto?
  • 4:30 - 4:37
    No, se nos han acabado los elementos. Salimos
    del ciclo 'for' y regresamos el producto.
  • 4:37 - 4:42
    O la variable 'product', a lo que se esta refireindo y
    eso es lo que debería decir.
  • 4:42 - 4:47
    Deberíamos regresar el valor al que 'product'
    se está refiriendo y ese valor es 6.
  • 4:47 - 4:50
    Entonces cuando llamas 'factorial 3', regresará 6.
  • 4:50 - 5:00
    Entonces si fueras a decir 'factorial', si dices factorial de
    3 más factorial de 3
  • 5:00 - 5:06
    y si fueras a evaluar esta expresión, esta expresión
    evaluaría en 6.
  • 5:06 - 5:10
    Y esta expresión de aquí evaluaría en 6
    porque eso es lo que la función regresaría.
  • 5:10 - 5:14
    Y entonces si añades esos, evaluaría en 12.
  • 5:14 - 5:16
    Así que esto es por lo que lo llamamos iterativo.
  • 5:16 - 5:22
    Seguimos iterando a través del mismo conjunto
    de instrucciones y ahora comparemos la
    definición recursiva.
  • 5:22 - 5:25
    Y ésta es un poco más divertida en muchas formas.
  • 5:25 - 5:28
    Una vez de nuevo vamos a llamar factorial de 3.
  • 5:28 - 5:31
    Factorial de 3.
  • 5:31 - 5:35
    Entonces 3 es nuestro argumento. Ese es el valor al
    que ese número hará referencia y lo tomará.
  • 5:35 - 5:37
    Y dice, si 'number' es menor que o igual a 1.
  • 5:37 - 5:39
    Bueno 3 no es menor que o igual a 1.
  • 5:39 - 5:41
    Entonces no vamos a hacer esta parte de aquí.
  • 5:41 - 5:42
    Vamos a hacer la cláusula 'else'.
  • 5:42 - 5:49
    Entonces vamos a regresar 'number'. Vamos a
    regresar 'number' por factorial de todo esto.
  • 5:49 - 5:57
    Entonces esto va a evaluar en 'number' que es 3.
    Ese es el argumento que pasamos.
  • 5:57 - 6:08
    Multiplicado por factorial de 'number' menos 1.
  • 6:08 - 6:11
    Bueno 'number' - 1 va a evaluar en 2. Tres menos 1 es 2.
  • 6:11 - 6:13
    Entonces por factorial de 2.
  • 6:13 - 6:16
    Bueno eso es otra función llamada 'factorial'
    entonces regresamos.
  • 6:16 - 6:19
    Bueno, factorial, pero ahora el argumento es 2.
    Entonces el 'number' es 2.
  • 6:19 - 6:22
    Vamos aquí. Si 'number' es menor que o igual a 1,
    hacemos esto.
  • 6:22 - 6:25
    Pero 'number' no es menor que o igual a 1. Es 2.
    Entonces ahora hacemos 'else'.
  • 6:25 - 6:30
    Entonces lo que ahora queremos regresar es
    'number' por factorial 'number' menos 1.
  • 6:30 - 6:32
    Bueno, en esta situación...
  • 6:32 - 6:38
    En esta situación, 'number' es ahora 2 y vamos
    a querer multiplicar esas veces el factorial...
  • 6:38 - 6:44
    por el factorial de 2 - 1.
  • 6:44 - 6:45
    Bueno 2 - 1 es 1.
  • 6:45 - 6:47
    Por el factorial de 1.
  • 6:47 - 6:53
    Bueno, exactamente hemos hecho otra llamada
    a la función. Entonces el interpretador como que
    tiene que recordar que hicimos toda esta
  • 6:53 - 6:55
    serie de llamadas a la función y tiene que
    seguir excavando más profundo y más
    profundo y más profundo.
  • 6:55 - 6:58
    Ahora hemos llamado factorial de 1.
  • 6:58 - 7:02
    Factorial de 1. Cuál es el argumento? 'Number' se
    refiere a 1.
  • 7:02 - 7:04
    Si 'number' es menos que o igual a 1,
  • 7:04 - 7:06
    'number' es menor que o igual a 1.
  • 7:06 - 7:09
    Ahora esto es lo que llamamos un caso base.
    Como que estamos bajando hacia él.
  • 7:09 - 7:12
    Entonces 'number' es menor que o igual a 1. Regresa 1.
  • 7:12 - 7:17
    Entonces en esta situación, cuando llamamos
    factorial 1, literalmente regresa 1.
  • 7:17 - 7:23
    Y ahora sabemos que factorial de 2 evalúa en
    2 por 1.
  • 7:23 - 7:36
    Entonces esto evalúa en 2 y ahora sabemos que
    factorial de 3 evalúa en 3 por 2, lo que evaluará en 6.
  • 7:36 - 7:40
    Así que hay diferentes formas de pensar en esto,
    pero que dan exactamente el mismo resultado.
  • 7:40 - 7:44
    Una vez de nuevo, si tienes factorial de 3 +
    factorial de 3, no importa como lo implementamos,
  • 7:44 -
    obtendremos 6 + 6 o 12.
Title:
TITULO: Comparación de funciones iterativas y recursivas
Description:

Comparing iterative and recursive factorial functions

more » « less
Video Language:
English
Duration:
07:48

Spanish subtitles

Revisions Compare revisions