Cargando

  • 2 Min To Read
  • 01 Jan, 0001
    Índice de contenido

    La función se da a continuación: def factorial(n): if n == 1: # La condición de terminación return 1 # El caso base demás: res = n * factorial(n-1) # La llamada recursiva volver res imprimir(factorial(5)) La clave para entender esta función es que tiene:

    1. Una condición de terminación cuya ejecución está garantizada cuando el valor de n es 1. Este es el caso base; no podemos reducir el problema más abajo ya que el factorial de 1 es 1!
    2. La función se llama recursivamente a sí misma pero con n − 1 como argumento; esto significa cada vez que se llama a sí mismo el valor de n es menor. Así, el valor devuelto por esta llamada es el resultado de un cálculo más pequeño. Para aclarar cómo funciona esto, podemos agregar algunas declaraciones de impresión (y una profundidad indicador) a la función para indicar su comportamiento: def factorial(n, profundidad = 1): si n == 1: print(’\t’ * profundidad, ‘Retornando 1’) volver 1 demás: print(’\t’*profundidad,‘Llamando factorial recursivamente(’,n- 1,’)’) resultado = n * factorial(n-1, profundidad + 1) print(’\t’ * profundidad, ‘Retornando:’, resultado) resultado devuelto print(‘Llamando factorial( 5 )’) imprimir(factorial(5)) Cuando ejecutamos esta versión del programa, el resultado es: Factorial de llamadas( 5 ) Llamada factorial recursiva( 4 )

    Llamada factorial recursiva( 3 )

    Llamada recursiva factorial( 2 )

    Llamada factorial recursiva( 1 )

    regresando 1

    Regreso: 2

    Regreso: 6

    Regreso: 24 Regreso: 120 120 9.6 Cálculo factorial recursivamente 103

    comments powered by Disqus