Hola, mi nombre es Antonio Alfonso Martínez y en el presente artículo me dispongo a explicar un sencillo método para calcular el factorial de un número haciendo uso del concepto de recursividad.
Para empezar, diremos que el factorial de un número natural "n" es el resultado del producto de todos los números desde 1 hasta dicho número "n".
Así, para efectuar el calculo del factorial de un número, vamos a emplear una sencilla función a la que daremos el nombre de "factorial". De modo, que, partiendo del hecho de que el factorial de 1 y 0 es 1, construiremos nuestra función (a la que daremos el nombre de "factorial") para realizar el calculo del factorial de 5:
Lo que hace esta función, es tomar como argumento un número "n". de modo que si este es 0 o 1 ("if n==0 or n==1:") la función devolverá directamente como resultado el número 1 ("resultado=1"). Sin embargo si dicho número "n" es mayor que 1 ("elif n>1:"), haremos que el resultado ("resultado") sea igual al producto de dicho número por el resultado de aplicar la misma función "factorial" por el mismo número menos 1 ("resultado=n*factorial(n-1)"). La peculiaridad de esta función reside, precisamente en ese último hecho, en la medida que se trata de una función que contiene una llamada a sí misma. Esto es lo que se conoce como función recursiva.
¿Pero como funciona exactamente la función recursiva "factorial" de nuestro ejemplo? Para empezar diremos que esta funciona mediante un proceso en el que para calcular el factorial de un número mayor que 1 (ya que si es igual a 1 el resultado será directamente 1),"n" tenemos que calcular el producto de dicho número por el factorial del número inmediatamente inferior a dicho número (n-1). El problema es que, tampoco sabemos el factorial de "n-1", con lo que tendremos que dejar el calculo del factorial de "n" en espera mientras calculamos el factorial de "n-1". Esta operación la iremos haciendo del mismo modo hasta que "n" sea 1, momento en que tendremos un resultado concreto (1) que será aplicando de forma acumulada a las funciones factoriales que hayamos dejado en espera.
Para ilustrar este proceso, nos valdremos de una imagen mediante la que expresamos como funciona nuestra función recursiva "factorial" para un valor de "n" igual a 4, en donde hemos sustituido "n" por su valor actual en cada paso del proceso recursivo:
Así partimos de n=4 como argumento.Dado que 4 es mayor que 1, el "resultado" será igual al producto de 4 por la aplicación de la misma función "factorial" sobre 3 ("n-1"). A su vez, como 3 sigue siendo mayor que 1, el "resultado" será 3*factorial(2). Ahora aplicamos la función "factorial" sobre 2, que sigue siendo mayor que 1, con lo que el "resultado" será 2*factorial(1). Cuando "n" adopta el valor de 1, se produce el hecho de que obtenemos, en la función un resultado concreto ("resultado=1"), con el que emprenderemos el camino de vuelta, aplicándose los resultados, sucesivamente y de forma acumulada, a las funciones que habían quedado en espera, hasta obtener el resultado final de 24.
Así nuestra función nos daría un resultado final de 24. A su vez, si introducimos una sentencia "print" para visualizar el valor de "resultado" podríamos ver los valores acumulados de las sucesivas funciones "factorial" hasta llegar el resultado final:
Lo que da como resultado:
Saludos.
Comentarios
Publicar un comentario